Sumy częściowe – program wypisuje prawidłowy wynik, a następnie ciągi cyfr z kosmosu

0

Witam mam problem z zadaniem na main głównie z tym https://main.edu.pl/pl/user.phtml?op=showtask&task=scz&con=PAS napisałem oto taki program i mimo iż on działa jeżeli sie go skompiluje oraz wpisze dane wypisuje on poprawny wynik ale zaraz za nim są ciągi cyfr które są z kosmosu chciałbym je wyrzucić jak coś takiego moge zrobić ? Pozdrawiam

#include <iostream>

using namespace std;

int main()
{
    int i;
    int suma1,suma2,suma3,suma4;
    cin >> i;
    int tab[i];
    for(int j=0;j<i;j++)
    {
        cin >> tab[j];
    }
    for(int j=0;j<i;j++)
    {
        suma1=tab[j]+tab[j+1]+tab[j+2]+tab[j+3];
        suma2=tab[j+1]+tab[j+2]+tab[j+3];
        suma3=tab[j+2]+tab[j+3];
        suma4=tab[j+3];
        cout << suma1 << " " << suma2 << " " << suma3 << " " << suma4 << endl;

    }

    return 0;
}
0

bo robisz to, źle.
Wywal wszystkie sumaX. Zmien int tab[i]; na std::vector<int> tab(i); i kombinuj dalej.

1
#include <iostream>
#include <numeric>
#include <vector>

int main()
{
	int amount;
	std::cin >> amount;
	std::vector<int> v(amount);

	for (auto& a : v)
		std::cin >> a;

	for (int i = 0; i != v.size(); ++i)
		std::cout << std::accumulate(v.begin() + i, v.end(), 0) << ' ';
	return 0;
}
0

@Tadeusz Młot: w zależności od kompilatora, rozmiar tablicy tab może być prawidłowy, a może i nie być. Jeśli już koniecznie chcesz użyć zwykłej tablicy i nadać jej rozmiar według danych wczytanych z klawiatury, to skorzystaj z new i free – zawsze będzie działać prawidłowo.

Natomiast samo wyświetlanie śmieci nie jest dziwne – zobacz jak iterujesz po pętli:

for(int j=0;j<i;j++)
{
    suma1=tab[j]+tab[j+1]+tab[j+2]+tab[j+3];

Ostatnia iteracja pętli to j równe ostatniemu indeksowi tablicy (czyli i - 1), a do suma1 wpisujesz wartość ostatniej prawidłowej komórki, plus wartości trzech komórek spoza tablicy (a te nie wiadomo co zawierają).

0

Dzięuje bardzo za wszystkie odpowiedzi uporałem sie z tym zadaniem nie zauwazyłem że tam jest ilość a(n) a nie a(4) mój głupi błąd z nie doczytania dziękuje i Pozdrawiam

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