[C++] Suma i iloczyn podanych liczb

alek1292
Użytkownik
Użytkownik
Posty: 101
Rejestracja: 29 gru 2012, o 16:45
Płeć: Mężczyzna
Lokalizacja: polska
Podziękował: 15 razy

[C++] Suma i iloczyn podanych liczb

Post autor: alek1292 »

Mam napisać program który pobiera od użytkownika liczby do momentu wpisania liczby zero i z pobranych liczb liczy sumę i iloczyn. Oto mój kod. Niestety ta pętla zachowuje sie dziwnie nie wiem dlaczego tak sie dzieje

Kod: Zaznacz cały

#include <iostream>
#include <conio.h>
using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
    float suma=0;
    float iloczyn=1;
    int licznik=0;

	bool podana=true;

	while (podana==true)
    {
        licznik=licznik+1;

        int a[licznik];
        cout << "Podawaj liczby do momentu wpisania zera"<< endl;
        cin >> a[licznik];

        if (a[licznik]==0)
        {
            podana=false;
            cout << "podales zero koncze wczytywanie liczb" << endl;

        }
        for (int i=0; i<licznik; i++)
        {
            suma=suma+a[i];
            iloczyn=iloczyn*a[i];



        }







    }


      cout << suma;
      cout << iloczyn;

      getch();
	return 0;
}

Pracuje w środowisko codeblock. Kompilacja przebiega bez żadnych błędów i ostrzeżeń. Dzieki za pomoc
Ostatnio zmieniony 12 mar 2015, o 07:56 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
lukequaint
Użytkownik
Użytkownik
Posty: 219
Rejestracja: 5 maja 2010, o 18:27
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 75 razy

[C++] Suma i iloczyn podanych liczb

Post autor: lukequaint »

Zamiast tablicy, użyj zmiennej a. Ten sposób definiowania tablicy nie jest poprawny, odwołujesz się do elementu za tablicą (elementy tablicy o rozmiarze \(\displaystyle{ l}\) są numerowane od \(\displaystyle{ 0}\) do \(\displaystyle{ l-1}\)) i pętla for jest w złym miejscu - sumujesz i mnożysz wszystkie liczby po każdej wczytanej. Dodatkowo po wczytaniu \(\displaystyle{ 0}\) znów je mnożysz, co za każdym razem dawałoby iloczyn równy \(\displaystyle{ 0}\) (dodałem break).

O w ten sposób można to poprawić (pozostała część programu bez zmian):

Kod: Zaznacz cały

while (podana==true)
{
	int a;
	cout << "Podawaj liczby do momentu wpisania zera"<< endl;
	cin >> a;

	if (a==0)
	{
		podana=false;
		cout << "podales zero koncze wczytywanie liczb" << endl;
		break;
	}
	suma=suma+a;
	iloczyn=iloczyn*a;
}
cout << suma << endl;
cout << iloczyn << endl;
spartanPAGE
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 5 mar 2015, o 21:49
Płeć: Mężczyzna
Lokalizacja: Bielsko Biała

[C++] Suma i iloczyn podanych liczb

Post autor: spartanPAGE »

Przekombinowane

Kod: Zaznacz cały

#include <iostream>
using namespace std;

int main(){
	int num, sum_res = 0, mul_res = 1;
	while(cin >> num && num != 0){
		mul_res *= num;
		sum_res += num;
	}
	cout << sum_res << " " << mul_res << endl;
	return 0;
}
ODPOWIEDZ