MS Visual C++ консольные приложения

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
end3r
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 23.01.2006 (Пн) 15:45

MS Visual C++ консольные приложения

Сообщение end3r » 17.08.2006 (Чт) 3:18

Сорри что не в тему, но очень требуется помощь. :)
Пишу для начала просто консольный калькулятор, чтобы немного освоиться.
Есть вопрос:

После того как весь код в функции main выполнится, прога закрывается :(. А нужно чтобы юзер сам решал когда выходить из программы. То есть получается, ввожу я 5+7. Прога считает 5+7=12 выводит результат и закрывается. А нужно висеть дальше и ждать новых заданий :) Как заставить программу работать и дальше? Подозреваю нужно ввести цикл, но не знаю как, с синтаксисом еще не знаком, с функциями тоже.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.08.2006 (Чт) 3:21

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

end3r
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 23.01.2006 (Пн) 15:45

Сообщение end3r » 17.08.2006 (Чт) 3:35

Блин, шутники))))))) токо щас дошло почему эта тема здесь.
Перенесите тему пожалуйста куда следует.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.08.2006 (Чт) 8:07

назови свою main как-нибудь типа calc()
если пользователь попросил выйти, возвращай FALSE, иначе TRUE
и в main просто напиши while (calc());
Изображение

Денис Победря
Мегобойанист
Мегобойанист
 
Сообщения: 1037
Зарегистрирован: 03.01.2005 (Пн) 21:29
Откуда: Из Москвы

Сообщение Денис Победря » 17.08.2006 (Чт) 8:48

А ещё лучше пиши на .НЕТ
[Место cдаётся]

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.08.2006 (Чт) 8:56

Денис Победря писал(а):А ещё лучше пиши на .НЕТ

А ты мог бы объяснить, причем тут .NET?
Или это чтобы сказать что-нибудь?
Lasciate ogni speranza, voi ch'entrate.

Денис Победря
Мегобойанист
Мегобойанист
 
Сообщения: 1037
Зарегистрирован: 03.01.2005 (Пн) 21:29
Откуда: Из Москвы

Сообщение Денис Победря » 17.08.2006 (Чт) 9:08

Если человек плохо знает Си, то пусть лучше пишет на .Нете ибо там ВиБи (пусть с ООП наворотами), и консольные приложения писать просто.
[Место cдаётся]

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 17.08.2006 (Чт) 9:24

Денис Победря
Если человек плохо знает C++ и хочет его изучить, то ему можно только пожелать удачи. C++ как ни один другой язык программирования позволяет понять тонкости работы компьютера и ОС.
В отличие от .NET, который очень вреден на ранних этапах, так как программируя в нем, может создастся ложное и противоречивое представление об устройстве компьютера в целом.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.08.2006 (Чт) 9:28

Денис Победря писал(а):Если человек плохо знает Си, то пусть лучше пишет на .Нете ибо там ВиБи (пусть с ООП наворотами), и консольные приложения писать просто.

А ты попробуй перечитать вопрос еще раз. Особенно второй абзац. Особенно шестое предложение.
А затем прочитай ответ tyomitch-а.
А то я не понимаю, зачем давать бессмысленный ответ, если верный ответ уже прозвучал.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.08.2006 (Чт) 9:29

ANDLL писал(а):C++ как ни один другой язык программирования позволяет понять тонкости работы компьютера и ОС.

Зачем?
В .NET не нужно знать тонкости работы компьютера и ОС.
В .NET нужно знать тонкости работы виртуальной машины.
Lasciate ogni speranza, voi ch'entrate.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 17.08.2006 (Чт) 9:47

alibek
Иногда всплывают и тонкости работы ОС.
Вообще-то я недолго программирую в .NET.
Вот ты скажи, что не всплывают?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.08.2006 (Чт) 9:54

Я в нем программирую еще меньше.
Но если какие-то железячные нюансы и всплывают, то это пока фреймворк сырой. Вот доведут до сносного состояния и перекроют выход за пределы виртуальной машины.
Lasciate ogni speranza, voi ch'entrate.

Денис Победря
Мегобойанист
Мегобойанист
 
Сообщения: 1037
Зарегистрирован: 03.01.2005 (Пн) 21:29
Откуда: Из Москвы

Сообщение Денис Победря » 17.08.2006 (Чт) 12:51

Ну извиняюсь :oops:

И будем мы сидеть на Макинтошах
[Место cдаётся]

end3r
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 23.01.2006 (Пн) 15:45

Сообщение end3r » 17.08.2006 (Чт) 17:23

tyomitch писал(а):назови свою main как-нибудь типа calc()
если пользователь попросил выйти, возвращай FALSE, иначе TRUE
и в main просто напиши while (calc());

Не совсем понял... Без main ведь нельзя! Main обязательно должна быть.
Теперь у меня две функции : main и calc.
В main вводятся данные, calc их считает и возвращает значение, которое выводится в main. Но все равно программа закрывается после первого же решенного примера :(
С while(calc()) я не разобрался. Как и куда писать? если я просто вставляю эту строку в код, появляется ошибка.
Нужно, чтобы прога не завершалась, пока ее не закроют!! Уверен, это что-то элементарное, но не знаю как сделать.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 17.08.2006 (Чт) 17:51

Код покажи. Можно без calc.
Изображение

end3r
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 23.01.2006 (Пн) 15:45

Сообщение end3r » 17.08.2006 (Чт) 18:30

Код: Выделить всё
#include <iostream.h>
#include <math.h>
float calc(float first, float second, char operand); // объявление функции
int main()
{
float A; //первое число
float B; //второе число
char SYMB; //операнд (+ - * /)
float result; //результат
cout <<"Vvedi vyrajenie\n";
cin >> A >> SYMB >> B;
result=calc(A,B,SYMB); //запуск calc
cout << A<<"+"<<B<<"="<<result<<"\n"; //вывод результата
}

float calc(float a,float b, char symb)
{
if (symb == (char)43) // если сложение
return a+b;
if (symb == (char)45) // если вычитание
return a-b;
if (symb == (char)42) // умножение
return a*b;
if (symb == (char)47) // деление
return a/b;
}

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.08.2006 (Чт) 18:46

Код: Выделить всё
#include <iostream.h>
#include <math.h>
float calc(float first, float second, char operand); // объявление функции
int old_main()
{
float A; //первое число
float B; //второе число
char SYMB; //операнд (+ - * /)
float result; //результат
cout <<"Vvedi vyrajenie\n";
cin >> A >> SYMB >> B;
result=calc(A,B,SYMB); //запуск calc
cout << A<<"+"<<B<<"="<<result<<"\n"; //вывод результата
return TRUE;
}

float calc(float a,float b, char symb)
{
if (symb == (char)43) // если сложение
return a+b;
if (symb == (char)45) // если вычитание
return a-b;
if (symb == (char)42) // умножение
return a*b;
if (symb == (char)47) // деление
return a/b;
}

int main() {while (old_main());}
Изображение

end3r
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 23.01.2006 (Пн) 15:45

Сообщение end3r » 17.08.2006 (Чт) 19:00

tyomitch
Не компилируется, 1 ошибка

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.08.2006 (Чт) 19:16

и какая, если не секрет? поди, TRUE не определена? :-)
Изображение

end3r
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 23.01.2006 (Пн) 15:45

Сообщение end3r » 17.08.2006 (Чт) 19:20

Я не знаю какая. Внизу в окошке появляется надпись 1 error 1 warning
Что значит True не определена? Как определить?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.08.2006 (Чт) 19:26

end3r писал(а):Я не знаю какая. Внизу в окошке появляется надпись 1 error 1 warning

Восхитительно.
Среда какая?
Изображение

end3r
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 23.01.2006 (Пн) 15:45

Сообщение end3r » 17.08.2006 (Чт) 19:35

Microsoft Visual C++ 6.0 Standard Edition

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.08.2006 (Чт) 19:37

Тогда над надписью 1 error 1 warning в том же окошечке внизу должны быть описания ошибок.
Изображение

end3r
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 23.01.2006 (Пн) 15:45

Сообщение end3r » 17.08.2006 (Чт) 19:39

Гм, верно как это я сам не заметил.
Вот ошибка: error C2065: 'TRUE' : undeclared identifier

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 17.08.2006 (Чт) 19:46

Наверху пиши
#define FALSE 0;
#define TRUE !FALSE;

:lol:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

end3r
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 23.01.2006 (Пн) 15:45

Сообщение end3r » 17.08.2006 (Чт) 19:54

tyomitch
Хакер
Спасибо огромное, теперь получилось.
Кстати, что означает строка
#define TRUE !FALSE;

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 17.08.2006 (Чт) 19:55

Это значит что
ИСТИНА - НЕ ЛОЖЬ :wink:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 17.08.2006 (Чт) 20:02

А вообще подобное делается куда проще...
Код: Выделить всё

#include <iostream.h>
#include <math.h>

void main()
{
  float A; //первое число
  float B; //второе число
  char SYMB; //операнд (+ - * /)
  float result; //результат

  while(1)
  {
    cout <<"Vvedi vyrajenie\n";
    cin >> A >> SYMB >> B;
    switch(SYMB)
    {
      case '+': result = A + B; break;
      case '-': result = A - B; break;
      case '*': result = A * B; break;
      case '/': result = A / B; break;
    }
    cout << A<<SYMB<<B<<"="<<result<<"\n"; //вывод результата
  }
}


ЗЫ. даже код тёмыча содержал ошибку
Код: Выделить всё
cout << A<<"+"<<B<<"="<<result<<"\n"; //вывод результата
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 116

    TopList