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

c++ krótki program

VPS Starter Arubacloud
0 głosów
966 wizyt
pytanie zadane 11 sierpnia 2019 w C i C++ przez martin1724 Użytkownik (690 p.)
#include <iostream>
using namespace std;
int tablica[100];
int main()
{
    int x, i, suma;
    i=0;
    int zbior[1000];
    while(x>0){
        cout << "wprowadz liczbe: ";
        cin >> x;
        i++;
        x = zbior[i];
    }
    for(int j=0;j<i;i++)
    {
        suma += zbior[i];
    }
    float srednia;
    srednia = suma/i;
    cout << "srednia wynosi: " << srednia;
    return 0;
}

Cześć, mógłby mi ktoś wskazać błąd jaki robie odnośnie pętli while? mimo wpisywania 0 dla x. Nadal pętla działa

 

komentarz 11 sierpnia 2019 przez tkz Nałogowiec (42,020 p.)
Ogólnie cały kod do poprawy. Użyj vectora z stl, będzie łatwiej, przyjemniej no i czyściej.

2 odpowiedzi

+2 głosów
odpowiedź 11 sierpnia 2019 przez maselo93 Użytkownik (880 p.)
wybrane 13 sierpnia 2019 przez martin1724
 
Najlepsza

	x = 0;
	do
	{
		cout << "wprowadz liczbe: ";
		cin >> x;
		i++;
		zbior[i] = x;
	} while (x > 0);

Zmienna x nie ma inicjalizacji, druga sprawa w pętli while nie wpisujesz 0 dla x, lecz niewidomo co - linijka 13 :)

komentarz 12 sierpnia 2019 przez martin1724 Użytkownik (690 p.)

#include <iostream>
using namespace std;
int tablica[100];
int main()
{
    int x, i, suma, j;
    i=0;
    suma = 0;
    int zbior[1000];
   x = 0;
do
{
    cout << "wprowadz liczbe: ";
    cin >> x;
    i++;
    zbior[i] = x;
} while (x > 0);
    for(int j=0;j<i;j++)
    {
        suma += zbior[j];
    }
    float srednia = 0;
    cout << "suma wynosi "<< suma<< endl;
    cout << "i wynosi: " << i;
    srednia = suma/i;
    cout << "srednia wynosi: " << srednia;
    return 0;
}

ok, wyglada to lepiej ale nadal wychodzi problem z sumą

komentarz 12 sierpnia 2019 przez maselo93 Użytkownik (880 p.)

nie liczy dobrze sumy, bo najpierw powinna wartość być wpisana do tablicy a później nastąpić inkrementacja

zbior[i] = x;
i++;

później Ci znowu dobrze program nie policzy, zwróć uwagę że jak będziesz chciał policzyć średnią z liczb 2 i 4 dobry wynik raczej Ci nie wyjdzie (wyjdzie 2). Lepiej by było 

srednia = suma/(i-1);

 

0 głosów
odpowiedź 11 sierpnia 2019 przez VirtualMember Pasjonat (15,790 p.)
inkrementujesz i, a nie j. Powinno być j++ (15 linijka)
komentarz 11 sierpnia 2019 przez martin1724 Użytkownik (690 p.)
poprawione, ale w pętla while nadal się nie zatrzymuje
komentarz 11 sierpnia 2019 przez niezalogowany
int x=0;
while{
...
if(cin.fail()) break;

//spróbuj tego

 

Podobne pytania

0 głosów
3 odpowiedzi 623 wizyt
pytanie zadane 3 października 2015 w C i C++ przez filowsky Nowicjusz (150 p.)
0 głosów
3 odpowiedzi 326 wizyt
0 głosów
1 odpowiedź 444 wizyt

93,078 zapytań

142,042 odpowiedzi

321,446 komentarzy

62,423 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...