Вопрос № 31891: Добрых суток, Эксперты!
Нужно записать в массив стрингов все незвания файлов что есть в диррестории......Вопрос № 31893: У меня в результате всегда выводится, что произведение равно 0, хотя на самом деле это не так. Еще раз напишу вам точную формулировку задания: дан одномерный массив а вещественного типа, состоящий из n элементов. Вычислить произведение
P=a1*a2*…*...
Вопрос № 31.891
Добрых суток, Эксперты!
Нужно записать в массив стрингов все незвания файлов что есть в диррестории...
Отправлен: 20.12.2005, 17:31
Вопрос задал: Zitz (статус: 3-ий класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Jadd
Здравствуйте, Zitz!
Среда какая? В Билдере юзаешь TList, в VC++ CStringList CArray.
Пример поиска в приложении.
Приложение:
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 20.12.2005, 17:59 Оценка за ответ: 5 Комментарий оценки: Столько мусора в коде... Я так понял FindNextFile - нужная мне АПИ... И первый параметр это собственно путь... Прекрасно, что маску распознает!!!
Вопрос № 31.893
У меня в результате всегда выводится, что произведение равно 0, хотя на самом деле это не так. Еще раз напишу вам точную формулировку задания: дан одномерный массив а вещественного типа, состоящий из n элементов. Вычислить произведение
P=a1*a2*…*ak, где ai!=0 (i=1,2,…k) ,ak+1=0. Посмотрите, пожалуйста, что неправильно в коде.
Приложение:
Отправлен: 20.12.2005, 18:19
Вопрос задал: Commandos (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: BOIL
Здравствуйте, Commandos!
Оч.Важн.Заменчан. : ИНИЦИАЛИЗИРУЙ переменные ВСЕГДА
В приложении измененные части отмечены строчными комментариями
Удачи в програмировании!
Приложение:
Ответ отправил: BOIL (статус: 5-ый класс)
Отправлен: 20.12.2005, 18:31
Отвечает: Zitz
Здравствуйте, Commandos!
Внимательней надо быть!!!
Во первых уже третий раз высылаю, что начальное
значение p должно быть еденицей, т.к. число умноженое на один есть тоже
самое число, а число умноженое на мусор не есть тоже самое число...
Во вторых знак сравнения в С++ вот такой ==, а присвоения =
Т.е. когда ты первому элементу присваеваешь ноль и умножаешь его на твое
произведение, то получается 0, так что все правильно!
Вот работающий код, чтоназывается найди десять отличий... ;-)
(вместо русского языка - кака, не смущайся)
Приложение:
Ответ отправил: Zitz (статус: 3-ий класс)
Отправлен: 20.12.2005, 19:33
Отвечает: Iluha
Здравствуйте, Commandos!
Попробуй сначала инициализировать переменную p
Например в цикле for :
for(i=0, p = 1;i<N_ELEM;i++) {...}
И затем, в языке Си логическая операция сравнения на равенство записывается так:
if (a[i+1] == 0) ...
а не так
if (a[i+1] = 0) ...
Во втором случае ты используешь оператор присваивания (т.е фактически зануляешь следующий элемент).
Ответ отправил: Iluha (статус: 1-ый класс)
Отправлен: 20.12.2005, 22:37
Отвечает: Лучников Юрий Владимирович
Здравствуйте, Commandos!
Переменную-аккумулятор p нужно для начала инициализировать единицей.
Отвечает: PROD
Здравствуйте, Commandos!
Во первых вы в условии if (a[i+1]=0 && a[i]!=0) поставили один знак "=" вместо "==", то есть в место проверки делаете присваевание
Во вторых вот этот момент:
for(i=0;i<N_ELEM;i++)
{ if (a[i+1]=0 && a[i]!=0)break;
p*=a[i];
}
на последнем проходе цикла i=N_ELEM-1
и когда вы в условии if (a[i+1]=0.... хотите проверить N_ELEM`ый элемент массива вы по сути должны получить или false или error так как этого элемента нет -незабывайте что в Си массивы начинаются с 0, так что в массиве a[N_ELEM] последним индексом будет N_ELEM-1
В третих не совсем понимаю (вернее совсем не понимаю) чего вы хотите от программы, или что хотят от вас -
можно по подробней истолковать этот кусок: "где ai!=0 (i=1,2,…k) ,ak+1=0."
Ответ отправил: PROD (статус: 2-ой класс)
Отправлен: 21.12.2005, 20:08