• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pobieranie błędnych wartości

0 głosów
402 wizyt
pytanie zadane 29 grudnia 2020 w C i C++ przez Adyn Nowicjusz (190 p.)

Dzień dobry,

przychodzę tu z pewnym problemem ktory nie daje mi od dluzszego czasu spokoju. Otóż, musze uzyskac w programie format "a+b" (bez zadnych spacji i innych znakow). Dodatkowo zmienna a oraz b sa stringami. Aby to uzyskac wprowadzam jedna zmienna ab, wyszukuje znaku  (+,-,*,/) a nastepnie rozdzielam na dwie liczby. Wszystko dziala poprawnie, jednak na samym starcie programu musze zapytac uzytkownika o liczbe powtorzen calego programu, gdy uzytkownik ja podaje funkcja find_first_of nie wiedziec czemu szuka tych znakow w tej liczbie powtorzen, a nie w liczbie ab. Ponizej zamieszczam kod, bylbym wdzieczny za pomoc.

P.S. probowalem juz to rozbic na dwie funkcje pobierajace odpowiednie argumenty, w obu przypadkach efekt ten sam :/

#include <iostream>
#include <string>
using namespace std;

void liczbaPowtorzen(void);


int main()
{
    string a;
    string b;
    string ab;
    int znak;
    liczbaPowtorzen();
    getline(cin,ab);
    cout << endl;
    cout << ab;
    znak = ab.find_first_of("+");
    if(znak < 0)
    {
        cout << "ab: " << ab;
        znak = ab.find_first_of("-");
        if(znak < 0)
        {
            znak = ab.find_first_of("*");
            if(znak < 0)
            {
                znak = ab.find_first_of("/");
            }
        }
    }
    cout << " miejsce znaku: " <<znak << endl;
    return 0;
}

void liczbaPowtorzen(void)
{
    int liczbaPowtorzen;
    cout << "Wprowadz liczbe potworzen: \n";
    cin >> liczbaPowtorzen;
    if(liczbaPowtorzen <0 || liczbaPowtorzen >200)
    {
        cout << "Bledna liczba powtorzen.\n";
        do
        {
            cout << "Wprowadz odpowiednia liczbe powtorzen, przedzial 0-200\n";
            cin >> liczbaPowtorzen;
        }while(liczbaPowtorzen > 200 || liczbaPowtorzen < 0);
    }
}

 

1 odpowiedź

+1 głos
odpowiedź 30 grudnia 2020 przez TOM_CPP Pasjonat (22,640 p.)
edycja 30 grudnia 2020 przez TOM_CPP


Zamień

 getline(cin,ab);

na

cin >> ab;

Poza tym funkcja liczbaPowtorzen powinna zwracać wartość wprowadzoną przez użytkownika. Teraz jej wywołanie niczego nie wnosi do programu, poza pozostawieniem nieuporządkowanego strumienia cin dla funkcji getline.

komentarz 30 grudnia 2020 przez Adyn Nowicjusz (190 p.)
Dziękuje, w początkowym zamysle funkcja liczbaPowtorzen w ogole nie istnieje, po prostu chcialem zobaczyc czy jej wprowadzenie pomoże mi jakoś z moim problemem. To proste rozwiazanie, na ktore jednak nie wpadlem rozwiazalo caly problem, takze bardzo dziekuje.

Podobne pytania

+1 głos
2 odpowiedzi 1,049 wizyt
pytanie zadane 12 czerwca 2019 w C i C++ przez k222 Nałogowiec (30,150 p.)
0 głosów
1 odpowiedź 278 wizyt
pytanie zadane 19 października 2018 w C i C++ przez MAXIM7 Obywatel (1,990 p.)
–1 głos
3 odpowiedzi 1,870 wizyt
pytanie zadane 31 stycznia 2017 w C i C++ przez Maciek123233 Gaduła (3,400 p.)

93,777 zapytań

142,736 odpowiedzi

323,388 komentarzy

63,381 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...