Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Бесконечность в цикле while |
Автор: Kontaktnik 22.8.2012, 01:01 |
Не судите строго за код.Я только начинаю разбираться с основами.У меня одна проблема, в цикле while, у меня постоянно возникает бесконечность повторения.Хочу чтобы мне обьяснили мою ошибку.Выполняю по одному готовому примеру свои задачи, но в примере вроде всё проходит, а вот в задачах возникает бесконечный цикл.Поясните пожалуйста самыми простыми словами. Задача состоит в том, чтобы с помощью контрольного значения (-1), т.е. пока его не введут, выполнялся цикл для разных заправок например.Требуется вывести км/литры по каждой конкретной заправке, и среднее кол-во км/литров по 2-3-4 заправкам #include <stdio.h> main () { float total = 0, counter = 0; int km, litr, a, itogkm, itoglitr; printf("Введите расход бензина(-1 to end): \n"); scanf("%d", &litr); printf("Введи кол-во проеденных км: \n"); scanf("%d", &km); while (counter != -1) { itoglitr += litr; itogkm += km; a = (float) km / litr; counter++; printf("Для этой заправки использовано км/литр: %f/n", a); } total = itogkm / itoglitr; printf("Среднее число км/литров: %d/n", total); return 0; } |
Автор: Фантом 22.8.2012, 01:10 |
Так ведь counter нигде не вводится. Сначала он равен 0, потом на каждом шаге цикла увеличивается на единицу, соответственно, до значения -1 не добирается. |
Автор: math64 22.8.2012, 08:08 |
Доберётся. Только ждать долго. Сначала от 0 доберётся до 0x7fffFFFF (это чуть больше 2000000000), затем столько же от -0x80000000 до -1. Если используешь 16 разрядный компилятор, ждать поменьше - от 0 до 32767 и от -32768 до -1. |
Автор: borisbn 22.8.2012, 08:54 |
![]() |
Автор: math64 22.8.2012, 11:41 | ||
Да, не заметил что float - тем более без подсветки синтаксиса. Kontaktnik, используй кнопку "Код"! С таким счётчиком даже такой цикл
будет бесконечным - из-за ошибок округления counter никогда не станет 0. Добавлено через 2 минуты и 40 секунд Кстати, total - тоже float, а печатается с помощью %d. Лажу напечатает. |
Автор: Kontaktnik 23.8.2012, 00:54 | ||||
Как сделать так, чтобы при вводе -1(т.е. этого самого контр.значения)
Пробывал реализовать с помощью if/else, но никак не поддаётся. Заранее благодарен |
Автор: NadezdaT 23.8.2012, 09:38 | ||
О_о...
|
Автор: Kontaktnik 23.8.2012, 14:34 |
Всем спасибо, разобрался |