Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Raub
0 / 0 / 0
Регистрация: 13.02.2009
Сообщений: 5
#1

Необычное поведение цикла for - C++ Builder

13.02.2009, 18:43. Просмотров 906. Ответов 8
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
Label1->Caption = "Âñåãî ГЇГ*ðòèé: " + IntToStr(VsegoPart);
for(i=0; i<VsegoPart;i++)
{
        sum = sum + masiv[i];          //Г°Г*Г±Г·ВёГІ ñóììû ãîëîñîâ
}
//Label11->Caption = FloatToStr(sum) + "\n"; // ïðîâåðêГ* sum
for(i=0;i<VsegoPart;i++)
{
        masman[i] = (masiv[i]/sum)*100;      //Г°Г*Г±Г·ВёГІ % ГЁ âûâîä
        Label5->Caption = Label5->Caption + FloatToStrF(masman[i],ffFixed,3,2) +
        +  " %" + "\n";
}
проблема заключается в том, что цикл for (нижний в коде) корректно пробегает лишь 3 раза. Именно 3.
Верхний цикл, имеющий тоже самое условие, пробегает сколько угодно раз правильно.
http://www.cyberforum.ru/php-beginners/thread1169253.html
Ограничивающее условие в цикле "i < VsegoPart" а переменная VsegoPart принимает значения и намного больше 3, причём самая верхняя строка кода выводит эту переменную для проверки, и она выводится правильно %)

у меня просто уже голова не варит, вроде всё перепробовал, из-за вот этой глупости стоит весь проект.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2009, 18:43
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Необычное поведение цикла for (C++ Builder):

Необычное поведение порта
Добрый день уважаемые форумчане. У меня к вам вопрос. Можно ли файерволл...

Необычное поведение холста
Привет;) Возможно я слишком устал, ну или болен, не знаю. Но у меня не...

Необычное поведение оператора инкремента
Добрый день! Это просто несчастье какое-то. Я пытаюсь посчитать коэффициенты...

Необычное поведение &nbsp;
&amp;nbsp; отображается на сайте в виде мягкого знака, картинку прилагаю: del ...

Необычное поведение при использовании каналов из <unistd.h>
Нужно написать программу на Си использующую несколько процессов. При написании...

8
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
13.02.2009, 19:11 #2
Выводи каждую итерацию цикла значение i и этой вот твоей переменной...
0
Raub
0 / 0 / 0
Регистрация: 13.02.2009
Сообщений: 5
13.02.2009, 19:24  [ТС] #3
Выводи каждую итерацию цикла значение i и этой вот твоей переменной...
для цикла в 4 итерации получил правильные значения i и VsegoPart, т.е.:
0 4
1 4
2 4
3 4

при этом программа работает как и раньше, дальнейшей обработки итераций свыше 3-й не происходит
0
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
13.02.2009, 19:29 #4
А почему она должна делать больше итераций, если у тебя i должен быть меньше 4? Она и выходит из цикла. Все правильно.
0
Raub
0 / 0 / 0
Регистрация: 13.02.2009
Сообщений: 5
13.02.2009, 19:33  [ТС] #5
ну в С первая итерация цикла это 0, он проходит:
0 - нормально
1 - нормально
2 - нормально
3 - с ошибкой, хотя 3 всё ещё меньше 4
причём даже если VsegoPart будет 15, то на 4-й итерации будет выдано правильное i и правильное VsegoPart, но дальнейшая обработка будет с ошибкой
0
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
13.02.2009, 19:34 #6
И каков текст этой ошибки?
0
Raub
0 / 0 / 0
Регистрация: 13.02.2009
Сообщений: 5
13.02.2009, 19:41  [ТС] #7
компилятор ошибок не выдаёт.
цикл выводит проценты, для первых 3-х итераций проценты он выводит правильно, причём как бы учитывая все последующие итерации вплоть до любого числа, но выводит правильно только для первых 3-х.
Пример: а - 100, б -100, в - 100, г - 100, д - 100, всего 500, цикл выведет:
а - 20,00%
б - 20,00%
в - 20,00%
г - 0,51%
д - 0,51%
я вообще не могу уловить логику его поведения
0
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
13.02.2009, 19:45 #8
А ты перед этой строчкой:
Код
masman[i] = (masiv[i]/sum)*100;
выведи число masiv[i].
Цикл for тут не при чем. Смотри логику своих расчетов.
0
Raub
0 / 0 / 0
Регистрация: 13.02.2009
Сообщений: 5
13.02.2009, 19:54  [ТС] #9
да, masiv[i] принимает очень странные значения после 3-й итерации, непонятно...

спасибо, буду отслеживать masiv[i] видимо он виноват
0
13.02.2009, 19:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2009, 19:54
Привет! Вот еще темы с решениями:

Распознавание речи и клавиатура - время ожидания - необычное поведение
Столкнулся с необычной проблемой. Использую распознавание речи.. То есть при...

Необычное поведение usb портов на материнской плате ecs p4m800-m7
материнка ecs p4m800-m7, не понятно работают usb порты, из всего домашнего...

Необычное поведение или "Купи слона"
Написал простенькую программку на С++, которая настойчиво просит купить слона,...

Поведение цикла while
Всем привет. Заранее прошу прощения за возможно неинтересный с научной точки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru