Błąd z wyswietlaniem danych

0

Siemka, głupi błąd, coś przeoczyłem pewnie ale mam zadanie zeby uzytkownik mogl wpisac jakies wyrazy ciagu, nastepnie mam zliczyc wszystkie dodatnie i ujemne wyrazy i wyswietlic ich wynik.
wszystko dziala, tylko jak wyswietla dane, to dla minusowych dane sa okej, a dla dodatnich wyswietlaja sie smieci

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int rozmiar;
    int licznikplus,licznikminus;
    cout << "Podaj rozmiar  ciagu: "; // stworzenie tablicy zapisujacej ciag
    cin >> rozmiar;
    int* tablica= new int[rozmiar];
   
   
    for( int i = 0; i < rozmiar; i++ ) // wpisanie zmiennej do tablicy dynamicznej
    {
        cin >> tablica[i];
    }
    cout << '\n';
   
    
    for( int i = 0; i < rozmiar; i++) // liczenie ile dodatnich/ujemnych
    {
        if(tablica[i]>0)
        licznikplus=licznikplus+1;
        else if(tablica[i]<0)
        licznikminus=licznikminus+1;
    }
    cout << "Liczb minusowych: " << licznikminus << endl;
    cout << "Liczb dodatnich: " << licznikplus << endl;
   
    
    cout << '\n';
    delete [] tablica;
    return 0;
}
4

Zapominasz ustawić początkowe wartości na zero:

int licznikplus = 0, licznikminus = 0;

Domyślnie, będą tam jakieś liczby, które przypadkiem się znalazły w pamięci (chyba, że zostaniesz ofiarą optymalizacji kompilatora, gdyż taki kod jaki napisałeś jest błędny, nie wolno odnosić się do wartości zmiennej, która nie miała takiej wartości nadanej. Kompilator wtedy może założyć, że z pewnością czegoś takiego byś nie zrobił, i zrobi jakąś mało zrozumiałą optymalizację, która doprowadzi do jeszcze mniej zrozumiałego błędu w trakcie wykonania).

0

Dziekuje slicznie, masz racje
do zamkniecia

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