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

Problem z zadaniem domowym rodział 9

Ostatnio zmodyfikowano 2014-07-25 21:11
Autor Wiadomość
szuban
Temat założony przez niniejszego użytkownika
Problem z zadaniem domowym rodział 9
» 2014-07-24 13:31:44
Witam, mam problem z odpowiednim wyjściem danych (korzystam z mac osx dlatego zamiast cin.sync(); używam cin.ignore( 1000, '\n' );)

Otóż mój kod wygląda tak:
C/C++
#include <cstdio>
#include <iostream>
using namespace std;

int main()
{
    double a, b, c;
    bool d, e, f;
   
    cout << "podaj pierwsza liczbe: ";
    cin >> a;
    d = cin.good();
    cin.clear();
    cin.ignore( 1000, '\n' );
    cout << "podaj druga liczbe: ";
    cin >> b;
    e = cin.good();
    cin.clear();
    cin.ignore( 1000, '\n' );
    cout << "podaj trzecia liczbe: ";
    cin >> c;
    f = cin.good();
    cin.clear();
    cin.ignore( 1000, '\n' );
   
   
   
    cout << "liczba pierwsza to: " << a << " wczytano? " << d << "." << endl;
    cout << "liczba druga to: " << b << " wczytano? " << e << "." << endl;
    cout << "liczba trzecia to: " << c << " wczytano? " << f << "." << endl;
   
    return 0;
   
}
Wszystko gra tylko nie mogę zrobić tak, aby przy wprowadzeniu liczby nr 3 "33.22nie" wyświetlało się 33.22. Fraza 33.22 wyświetla się gdy wprowadzę "33.22 nie" (ze spacją) a w instrukcji do zadania jest napisane, aby te dane wejściowe były bez spacji, cytat:

Przykładowe dane wejściowe
13.3
tak 123
33.22nie
 
Proszę o pomoc.
P-114276
Moorfox
» 2014-07-24 16:52:42
Nie wiem czy dobrze rozumiem o co ci chodzi, ale jesli jest tak jak mysle to musisz wczytywac string
np.
C/C++
char a[ 40 ];
cin >> a;

Po tym funkcja ktora rozdzieli ci czesc w ktorej znajduje sie char-liczby i char-znaki(jakkolwiek bezsensownie to brzmi)
Po tym przekonwertowac char-liczbowy na liczbowy
P-114295
szuban
Temat założony przez niniejszego użytkownika
nie rozumiem
» 2014-07-24 18:10:05
to jak mam rodzielic cyfry od znakow ASCII? Bo niezbyt zrozumiałem
P-114297
pekfos
» 2014-07-24 19:01:42
tylko nie mogę zrobić tak, aby przy wprowadzeniu liczby nr 3 "33.22nie" wyświetlało się 33.22.
A co się wyświetla?
P-114300
Moorfox
» 2014-07-24 20:52:24
C/C++
char str[] = "32.22TAK"
static char tab[ 9 ];
int a = 0;
for( int i = 0; str[ i ]; i++ )
{
    if(( str[ i ] >= '0' && str[ i ] <= '9' ) || str[ i ] == '.' )
    {
        tab[ a ] = str[ i ];
        a++;
    }
}
a = atoi( tab );

Naprzyklad taka funkcja, nie znam niestety latwiejszych rozwiazan xd
P-114308
pekfos
» 2014-07-24 21:20:18
Buffer overflow. A całość można zapisać 2, 3 razy krócej. Po co w ogóle tak kombinować?
P-114312
Moorfox
» 2014-07-24 21:29:30
gdzie ty widzisz buffer overflow i pokaz wersje 3 razy krocej bo chyba o to mu chodzi
P-114313
pekfos
» 2014-07-24 21:46:10
Jak podajesz rozwiązanie, to pisz tak, by działało dla normalnych danych, a nie dla wbitych do programu (dla tych też nie działa, btw), a da się podać takie dane, że program się złoży. Sam się domyśl jak, jest jedna opcja. I wątpię, że o to chodzi, a nawet jeśli, to wtedy podam ;)
P-114315
« 1 » 2
  Strona 1 z 2 Następna strona