c++ suma liczb

0

chce obliczyć dwie sumy a on dodaje mi dwie sumy
np dla
2
2 1 2
3 1 7 8
powinno być
1+2=3
1+7+8=16

A program mi liczy
1 +1+1+7+8=19
1 +1+1+7+8=19
jak go zmienić (bez tablic)

#include <iostream>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);


    int d;
    cin >> d;
    int suma=0;



    for(int i=0; i<d; i++)
    {
            int n;
            cin >> n;
            for(int j=0; j<n; j++)
            {
                        int a;
                        cin >> a;
                        suma += a;


                                    }



    }
    for(int i=0; i<d; i++)
    {
                cout <<suma << endl;
    }
    system("pause");
    return 0;
}
0

musisz zerować sumę przed każdym forem(z indeksem j) i wypisywać ją po tym forze.

0

Do powyższego dodam że sumę wypisuje się natychmiast po obliczeniach a nie po ostatnim obliczeniu, dodatkowo pasowało by wyraźnie poinformować użytkownika co ma podać u mnie działa ten kod

#include <iostream>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);


    int d;
    cout << "podaj ilość obliczeń" << endl;
    cin >> d;
    int suma=0;



    for(int i=0; i<d; i++)
    {
            suma=0;
            int n;
            cout << "podaj ilość składowych" << endl;
            cin >> n;
            for(int j=0; j<n; j++)
            {
                        int a;
                        cout << "podaj składową nr " << j+1 << endl;
                        cin >> a;
                        suma += a;


                                    }
        cout << "wynik to "<<suma << endl;
    }
   /* for(int i=0; i<d; i++)
    {
                cout <<suma << endl;
    }*/
    //system("pause");
    return 0;
}
 

system("pause") (wyrzuca errora u mnie na Linuksie nie wiem co z Windowsem) oraz już zbędny kawałek twojego kodu wykomentowałem.

edit: lekcja na dziś: debuger typu karta papieru. Gdybyś zapisywał wartości zmiennych na kartce i podążał za programem sam zorientował byś się gdzie są błędy. Aczkolwiek pewnie dalej nie miał byś dodanych prze ze mnie coutów informujących co teraz podać co sprawiło by że program choć działający byłby bezużyteczny.

0

chodzi mi o sposób wczytwywania i wyswitlania danych, bo z tym mam problem
Wczytuje
2
2 3 4
3 14 5 0
Wynik to
7
19

0

Jeśli wynik musi być na końcu po wszystkich "seriach dodawań" to bez tablicy albo jakiejś jej pochodnej typu vector czy lista się nie obejdzie (bo zmienna przechowuje jedną wartość, więc wynik obliczeń ulegnie nadpisaniu (a ściślej wyzerowaniu) po rozpoczęciu następnego ciągu licz bo dodania). Generalnie program który ci podałem generuje poprawne wyniki, tyle że suma jest wyświetlana po podaniu ostatniej liczby z serii. Swoją drogą czemu bez użycia tablicy? Ten program aż się prosi o zastosowanie jakiegoś kontenera do przechowywania wyników.

Edit: no chyba żeby z góry założyć że będą 2 serie, wtedy można zrobić np zmienne suma i suma2 oraz funkcję która przyjmie elementy do dodania, a potem zwróci ich sumę.

editowy ps Jak to do szkoły to przy takim zadaniu możesz spokojnie napisać

#include <iostream>
using namespace std;
 
int main() 


{
   cout << "zadanie nierozwiązywalne ze względu na sprzeczne warunki";
   return 0;
}


zakładając naturalnie że wyniki muszą być na samym końcu, a kontenerów faktycznie nie można używać a nie np tobie się nie chce.

0 użytkowników online, w tym zalogowanych: 0, gości: 0