Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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() ставить не пробовал? Это ж не Дельфи, в конце-то концов smile

Автор: Fin 7.1.2006, 01:39
Код

getch()

Компилятор же ясно говорит, пропушен знак ; . т.е. ты не закрыл оператор. Как правило в таких случаях компиляторы ругаются на следуюшую строку. Так как считают ее продолжением предыдушей.
Да кстати зачем в консольное приложение ташить библиотеку 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 - с дробными, т. е с цифрами после запятой)))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)