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

Gdzie jest błąd

Object Storage Arubacloud
0 głosów
205 wizyt
pytanie zadane 23 maja 2023 w C i C++ przez KarmazynowyKaraś Nowicjusz (240 p.)

Hej, siedze ostatnio dużo na polskim SPOJU i mam problem z niktórymi kodami. Czy mógłby mi ktoś powiedzieć gdzie tutaj jest błąd. Wiem że kod nieco zagmatwany chciałam go usprawnić, ale nie wyszło. Mimo to błędu nie widze i proszę o pomoc!
tREŚĆ ZADANIA:

Napisz program, który działa jak prosty kalkulator obsługujący pięć operacji: dodawanie, odejmowanie, mnożenie, dzielenie i obliczanie reszty z dzielenia liczb całkowitych.

Wejście

Na wejście programu podana zostanie pewna nieokreślona liczba zestawów danych. Zestawy składają się z jednoznakowego symbolu operacji do wykonania (+ dodawanie, - odejmowanie, * mnożenie, / dzielenie całkowitoliczbowe, % reszta z dzielenia) oraz następujących po nim dwóch liczb całkowitych. Poszczególne składowe zestawu zostaną rozdzielone spacjami, a same zestawy znakiem nowej linii. Liczba testów nie przekracza 100, wynik zawiera się w typie int32.

Wyjście

Na wyjściu programu ma się pojawić ciąg liczb będących rezultatem wykonania pojawiających się na wejściu poleceń. Poszczególne liczby należy rozdzielić znakami nowej linii. Uwaga! Można założyć, że dane wejściowe nie zawierają polecenia dzielenia przez 0.

#include <iostream>

using namespace std;

int main() 
{
    char znak; 
    int32_t liczba1, liczba2, ile;
    cin >> ile;
    int32_t wynik[ile];
    for(int i = 0; i < ile; i++)
    {
        cin >> znak;
        cin >> liczba1 >> liczba2;
        switch(znak)
            {
                case '+':
                    wynik[i] = liczba1+liczba2;
                break;
                case '-':
                    wynik[i] = liczba1-liczba2;
                break;
                case '*':
                    wynik[i] = liczba1*liczba2;
                break;
                case '/':
                    wynik[i] = liczba1/liczba2;
                break;
                case '%':
                    wynik[i] = liczba1%liczba2;
                break;
                default:
                cout << "Nieprawidlowy znak operacji" << endl;
            }
    }
    for(int i = 0; i < ile; i++)
        cout << wynik[i] << endl;
    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 23 maja 2023 przez Great Stary wyjadacz (12,340 p.)

Na wejście programu podana zostanie pewna nieokreślona liczba zestawów danych. 

int32_t liczba1, liczba2, ile;
cin >> ile;

Wczytujesz na wejściu liczbę testów, która nie pojawi się. Zastosuj taką pętlę:

while (cin >> znak >> liczba1 >> liczba2) 
1
komentarz 23 maja 2023 przez Oscar Nałogowiec (29,290 p.)
Dodatkowo - z treści zadania nie wynika, że trzeba pamiętać dane lub wyniki - tablice są niepotrzebne.

Podobne pytania

0 głosów
1 odpowiedź 576 wizyt
–1 głos
0 odpowiedzi 139 wizyt
pytanie zadane 14 czerwca 2020 w PHP przez x_000 Obywatel (1,460 p.)
+1 głos
2 odpowiedzi 236 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...