Позавчера сморозил глупость. В наказание себе разобрал код топистартера. Дело в том, что программа все равно ждет все аргументы, хоть для выхода ей нужен только один символ. Наберите "q 0 0 0" - выйдет как миленькая. Позволил себе поправить код:
Код: Выделить всё
#include <iostream> //подключаем заголовочные файлы
using namespace std;
int tablica[600]; //объявляем и иницилизируем переменные
char command;
int argum1=0, argum2=0, argum3=0;
int main(int argc, char *argv[]) //начало программы
{
cout << "Табличный редактор с командным управлением TablEdCo.";
cout << "\n" << "Автор: Нагашибай Жанибек.\nE-Mail: njm.janik@yandex.ru\n";
while (1) { //сюда переходим, если надо ввести команду
cout << "Жду...\n>";
cin >> command; //ввод команды
switch (command) //выбираем команды
{
case 'i':
cin >> argum1;
tablica[argum1]=argum2;
if (argum1 != 0 || argum2 !=0 || argum3 !=0) {
cout << "Аргументы {1 2 3}>>";}
cin >> argum1 >> argum2 >> argum3;
break;
case 'e':
tablica[argum1]=0;
if (argum1 != 0 || argum2 !=0 || argum3 !=0) {
cout << "Аргументы {1 2 3}>>";}
cin >> argum1 >> argum2 >> argum3;
break;
case 's':
tablica[argum3]=tablica[argum1]+tablica[argum2];
if (argum1 != 0 || argum2 !=0 || argum3 !=0) {
cout << "Аргументы {1 2 3}>>";}
cin >> argum1 >> argum2 >> argum3;
break;
case 'r':
tablica[argum3]=tablica[argum1]-tablica[argum2];
if (argum1 != 0 || argum2 !=0 || argum3 !=0) {
cout << "Аргументы {1 2 3}>>";}
cin >> argum1 >> argum2 >> argum3;
break;
case 'd':
tablica[argum3]=tablica[argum1]/tablica[argum2];
if (argum1 != 0 || argum2 !=0 || argum3 !=0) {
cout << "Аргументы {1 2 3}>>";}
cin >> argum1 >> argum2 >> argum3;
break;
case 'm':
tablica[argum3]=tablica[argum1]*tablica[argum2];
if (argum1 != 0 || argum2 !=0 || argum3 !=0) {
cout << "Аргументы {1 2 3}>>";}
cin >> argum1 >> argum2 >> argum3;
break;
case 'q':
return 0; //выходим из программы, возвращая ноль
default :
printf("Char %c is invalid simbol\n",command);
break;
argum1=0; argum2=0; argum3=0;
}
}
}
Теперь выходит при одном "q".
Жанибек, я не совсем понял шутку юмора, возможно в ветках swith и не нужны все аргументы. Оставь нужные. Во-вторых, если подать аргументы не целые, а, к примеру, символы, происходит зацикливание. Проверочки бы на корректность ввода...
PS На офтопике DEV-CPP (C+), в лине компилю под gcc, набранное в редакторе (C естественно), как-то в голове были бредовые мысли, что название стандартных потоков - не стандарт языка, а стандарт оси. Каюсь... Mea culpa, mea maxima culpa.