Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > считывание строк


Автор: Doublefaced 11.12.2008, 15:14
программа имитирует работу командной строки, требуется чтобы программа считывала независимо от количества пробелов...
м.б. цифры не те...но вроде несколько раз перепроверял...или ф-ция коряво написана?
подскажите плз.

Код

 #include <iostream>
#include <cstring>
#include <windows.h>

using namespace std;

char ReturnValue[256];

char* rus_str( char* str )
{
  CharToOem( str, ReturnValue );
  return ReturnValue;
}

const int MAXIMUM_LENGTH=80;

int main ()
{


    int count1=1, count2=1, k=0, ;

    char str [MAXIMUM_LENGTH];
    char word1 [MAXIMUM_LENGTH], op , word2 [MAXIMUM_LENGTH];
    cout << rus_str ("работа с командной строкой\n");
    cout << rus_str (" наберите команду exit, если хотите закончить \n");


    while (true )
    { 
    cout << "> ";
    cin.getline (str, MAXIMUM_LENGTH);


    for (int i=0; str[i]!=' '; i++)
        word1 [i]=str[i];
    word1[i++]='\0';
    
    
    for ( count; char prob[k]=' '; count1++)
        k++;
    

    if (!(bool (strcmp (word1, "Exit")) && bool (strcmp (word1, "exit")))) break;
    cout << word1<<"\t"<< strlen(word1)<<"\n";

    op=str[strlen(word1)+count1];
    cout<<op<<"\n";


    while (32)
    count2++;

    for (int j=0; str [strlen(word1)+1+count1+count2+j]!='\0'; j++)
    word2[j]=str[strlen(word1)+1+count1+count2+j];
    word2[j++]='\0';
    cout << word2<<"\t"<< strlen(word2)<<"\n";


    switch (op)
    {
        case '+': cout<< rus_str ("Здесь должна быть функция, выполняющая сложение\n");
        break;
        case '-': cout<< rus_str ("Здесь должна быть функция, выполняющая вычетание\n");
        break;
        case '*': cout<< rus_str ("Здесь должна быть функция, выполняющая умножение\n");
        break;
        case '/': cout<< rus_str ("Здесь должна быть функция, выполняющая деление\n");
        break;
        default: cout<<op<<"\t"; cout <<rus_str ("нет такой функции\n");
    }
    }
    cout <<rus_str ("конец программы\n");
    return 0;
}

Автор: xvr 11.12.2008, 16:06
Да уж, особенно порадовал цикл в строках 40-41, да и цикл в строках 51-52 тоже ничего  smile Совет - прежде, чем изливать свои мысли компилятору, постарайтесь их выразить так, что бы компилятор их понял, ибо он будет транслировать то, что программист написал, а не то, о чем он думал  smile 

Автор: Doublefaced 11.12.2008, 22:00
да вроде все норм...
есть у кого заготовки? или хоть подскажите...просто перепробовал уже кучу вариантов...

Автор: mes 11.12.2008, 22:06
Цитата(Doublefaced @  11.12.2008,  22:00 Найти цитируемый пост)
да вроде все норм...

смотрел только 40ю строку - 3 ошибки )
Цитата(Doublefaced @  11.12.2008,  15:14 Найти цитируемый пост)
  for ( count; char prob[k]=' '; count1++)

во второй секции цикла for должно быть условие продолжения цикла, а там что ?? (выделено жирным в цитате)
а почему в первой секции не проинициализирована переменная и ее отлично от переменной третей секции ?


Автор: Doublefaced 11.12.2008, 22:49
ну хм...разве так нельзя условие записать?
условие...что пока катый член массива не станет пробелом...
если нельзя это условие так описать, то подскажите плз как.





Автор: mes 11.12.2008, 23:53
Цитата(Doublefaced @  11.12.2008,  22:49 Найти цитируемый пост)
ну хм...разве так нельзя условие записать?

условие равно записывается как  ==, а  = явл.  оператором присвоения.

Цитата(Doublefaced @  11.12.2008,  22:49 Найти цитируемый пост)
условие...что пока катый член массива не станет пробелом...

Цитата(Doublefaced @  11.12.2008,  15:14 Найти цитируемый пост)
  for ( count; char prob[k]=' '; count1++)
        k++;

интересно а где в цике такое действие, чтоб элементы масива становились нулями ??
т тому же условие неправильно сформулировано, в цикле проверятся только один элеммент, а условие касается состояния всего массива,
так что в связи с неполнотой задачи привожу только общий пример:

цикл записывается так ;
for (int i=0; i<size; ++i) // i меняется в диапазоне [0 .. size-1]  включительно



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