Wpis z mikrobloga

Siemanko swiry. Mam problem, mianowicie chce wpisywac do tej tablicy jednowymiarowej jakiś podciąg liczb z pliku i potem sprawdzać czy jest to ciąg rosnący. Kod kompiluje sie ale pojawia sie ze cmd przestał działać( ͡° ʖ̯ ͡°) Pomoże ktoś zlokalizować błąd i ewentualnie sprawdzi czy to bedzie działać git wtedy?

#include
#include
using namespace std;
int main()
{
int licznik=0,k, tab[k], licznik2=0;
ofstream zapisz;
ifstream czytaj("dane.txt");

while(czytaj >> tab[k])
{
cout << tab[k] << endl;
licznik++;
}

for(int i =0; i < licznik; i++)
{
if(tab[i] < tab[i+1])
licznik2++;

else{
zapisz.open("wynik.txt");
zapisz << "Nie";
zapisz.close();
}
}

if(licznik2 = sizeof(tab[k]-1))
{
zapisz.open("wynik.txt");
zapisz << "Tak";
zapisz.close();
}
return 0;
}

#cpp #programowanie
  • 16
  • Odpowiedz
@kacper635: zdeklarowałeś k, ale nie zainicjalizowałeś jej. Także, w zmiennej k jest garbage value, Pamiętaj, że zmienne lokalne trzeba inicjalizować. Zrób sobie np. #define k (i ilosc miejsca w tablicy) albo zmienna globalna statyczną.
  • Odpowiedz
if(licznik2 = sizeof(tab[k]-1))


@kacper635: to kolejny blad....

co do tego jak powinno byc poprawnie. Zalezy co chcesz uzyskac, jak mniemam chcesz wypelnic tablice, wiec najpierw powinienes zainicjowac k = 0; a w srodku petli zwiekszac wartosc k, np jako k++; ale to moge tylko domniemywac, ze o to Ci chodzi.

kolejny blad to:

if(tab[i] < tab[i+1])

wychodzisz poza tablice bo do i = licznik - 1 vesziesz iterowal, elementow wypelnionych masz
  • Odpowiedz
@Kaczus2B: Troche pozmieniałem i myślisz że teraz jest już okej? Wlaśnie problem jedynie chyba z tym
if(tab[i] < tab[i+1])

Teraz to wygląda tak:
#include
#include
using namespace std;
int main()
{
int licznik=0,k=0, tab[100], licznik2=0;
ofstream zapisz;
ifstream czytaj("dane.txt");

while(czytaj >> tab[k])
{
cout << tab[k] << endl;
licznik++;
k++;
}

for(int i =0; i < licznik; i++)
{
if(tab[i-1] < tab[i])
licznik2++;
}

if(licznik2 == licznik-1)
{
zapisz.open("wynik.txt");
zapisz <<
  • Odpowiedz