Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > Проблема коомпилятора. |
Автор: Vorobey 7.1.2006, 01:23 |
Может Название темы не отражает её суть, но у меня почему то капризничает компилятор. Решил написать простейшую программу с оператором while. Вот её код. //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <stdio.h> #include <conio.h> //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { int lower,upper,step,a,b; lower=1; upper=100; step=2; a=lower; while(a <= upper) { b=a*2; printf("%4.0f %4.0f\n",a,b); a=a+step; } getch() } * //--------------------------------------------------------------------------- Компилятор (поправте если не правильно написал) выдаёт ошибку в строке с * (это поставил я только чтобы показать строку. В коде звёздочки нет) Ошибка пишется [C++ Error] Unit1.cpp(24): E2379 Statement missing ; Объясните в чём проблема??? Пытался много раз. Всегда вылезает. Было и раньше когда я писал программу по книге. Там тоже была жта проблема, но менее назойливая. Я тогда случайно передвинул последнюю фигурную скобку, но вернул обратно. ошибка выдавалась. Но когда я переписал код (не трогая скобку) всё стало ОК. |
Автор: volvo877 7.1.2006, 01:39 |
Vorobey, точку с запятой после getch() ставить не пробовал? Это ж не Дельфи, в конце-то концов ![]() |
Автор: Fin 7.1.2006, 01:39 | ||
Компилятор же ясно говорит, пропушен знак ; . т.е. ты не закрыл оператор. Как правило в таких случаях компиляторы ругаются на следуюшую строку. Так как считают ее продолжением предыдушей. Да кстати зачем в консольное приложение ташить библиотеку vcl.h? |
Автор: Vorobey 7.1.2006, 01:47 |
Если честно то эта библиотека у меня по умолчанию прописывается. Сам удивился. в демке этого не было. А про точку с запятой сглупил. ИЗВИНЯЮСЬ. Я сам новичёк, вот и проглядел. Спасибо. Всё заработало. Правда у меня в обоих столбиках нули. Я планировал 2 столбика. 1 это нечётные числа от 1 до 100. 2 это 1 столбик умноженный на 2. Когда записал int lower,upper,step; float a,b; то всё заработало. Можете объяснить почему. В книге не нашёл. Объясните попроще пожалуйста. Я так понял что float используется для чисел со знаками после запятой, а int для целых. но сдесь то пременные a и и получаются целые. вот я их и отнёс к типу int. В чём тогда проблема??? Почему были нули??? и что изменилось??? |
Автор: TIGERоX 7.1.2006, 02:30 |
printf("%4.0f %4.0f\n",a,b) - проблема в этом "f" указывает на то что а и b должны быть типа float посмотри справку на эту функцию! пробуй так printf("%d %d\n",a,b) a,b - int |
Автор: zarden 8.1.2006, 21:25 |
тип int используется при работе с целыми числами тип float - с дробными, т. е с цифрами после запятой))) |