Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Znak i liczba podawana w jednym strumieniu wejściowym.

Ostatnio zmodyfikowano 2011-09-06 23:07
Autor Wiadomość
Krump
Temat założony przez niniejszego użytkownika
Znak i liczba podawana w jednym strumieniu wejściowym.
» 2011-09-04 00:12:48
Cześć, zastanawiałem się ostatnio jak zrobić pewien myk. Kombinowałem sam na różne sposoby ale, zawsze coś nie wychodziło, choć koncepcja była dobra i logiczna. o co chodzi już mówię.

Załóżmy, że mamy taka sobie funkcję:

C/C++
double a, wynik;
int i;
do
{
    i++;
    cout << "Podaj " << i << " składnik: ";
    cin >> a;
    wynik = wynik + a;
}
while( a != 0 );

i = 0;
wynik_dzialania( wynik );

Jak zmienić ją, aby  np po wpisaniu Koniec zamiast 0 zakończyło pętle. Oczywiście trzeba zawojować z
char[]
, ale ja nie mam serca do tego typu zmiennych i nie mogę nic przez to wykombinować.

Macie pomysł, jak te cin dostosować, aby po wpisaniu albo liczby albo słowa Koniec funkcja robiła co potrzeba?
P-40465
malan
» 2011-09-04 02:14:54
C/C++
int n;
//...
std::cin >> n;

if( std::cin.fail() )
{
    // Podano coś, co nie jest liczbą.
}
P-40466
Krump
Temat założony przez niniejszego użytkownika
» 2011-09-04 13:11:09
To też był jeden z moich pomysłów, ale nie wiem jak skonwertować w tym przypadku aby tylko na słowo Koniec podliczało, a na inne, podawało Błędna komenda. ;/

PS. Sorry, że nie podałem w cytacie wcześniej, ale zapomniałem komendy xD
P-40473
malan
» 2011-09-04 13:43:16
C/C++
std::string number;

std::cin >> number;

if( isNumber( number ) )
{
    // Wprowadzono liczbe...
   
    int n = string2Int( number );
    //...
} else
{
    if( number == "koniec" )
    {
        // ...koniec.
    }
}
P-40475
Krump
Temat założony przez niniejszego użytkownika
» 2011-09-04 14:34:21
Dostosowałem to do swojej funkcji, ale jest problem ze string...

Otóż, gdy nie dodałem biblioteki
C/C++
#include <string>
To wyskakuje taki błąd:

1>test.cpp(56): error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::istream' (or there is no acceptable conversion)
1>          D:\Programy\Visula C++\VC\include\istream(1053): could be 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &&,signed char *)'
A gdy ja dodałem, to wyskakują takie błędy:

1>test.cpp(58): error C3861: 'isx': identifier not found
1>test.cpp(60): error C3861: 'string2Int': identifier not found
1>test.cpp(66): error C2181: illegal else without matching if
1>test.cpp(73): error C2451: conditional expression of type 'std::string' is illegal
P-40477
pekfos
» 2011-09-04 15:41:33
pokaż kod. Napisałeś funkcje string2Int() itd?
P-40485
Krump
Temat założony przez niniejszego użytkownika
» 2011-09-04 16:59:44
C/C++
case 1:
{
    cout << endl << "Aby zakończyć wpisz \"Koniec\"." << endl << endl << "\tDodawanie:" << endl << endl;
    do
    {
        i++;
        cout << "Podaj " << i << " składnik: ";
        string x;
        cin >> x;
        if( isNumber( x ) )
        {
            int n = string2Int( x );
            wynik = wynik + n;
        }
        else
        {
            if( x == "Koniec" || x == "koniec" || x == "kOniec" || x == "KONIEC" || x == "kONIEC" )
            else
            {
                cout << "Błędna komenda.";
                x == false;
            }
        }
       
    }
    while( x );
   
    i = 0;
    wynik_dzialania( wynik );
    break;
}
P-40497
pekfos
» 2011-09-04 17:17:45
pokaż kod funkcji isNumber() i string2Int()
P-40499
« 1 » 2 3
  Strona 1 z 3 Następna strona