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

question-closed wczytywanie z pliku c++

Object Storage Arubacloud
0 głosów
232 wizyt
pytanie zadane 14 lipca 2018 w C i C++ przez Nowacx02 Obywatel (1,060 p.)
zamknięte 14 lipca 2018 przez Nowacx02

Witam robię zadanie z wczytywania liczb z pliku tekstowego w którym należy je wypisać w oknie konsoli. W pliku znajdują się liczby od 1 do 100 jednak program wypisuje je tylko do 99 tak jakby "ucinająć" ostatnią liczbe. Nie pierwszy raz się z tym spotykam bo pisałem ostatni kod w podobnym stylu i także "ucinało" ostatnią linijke. Oto kod:

#include <fstream>
#include <iostream>
#include <string>

using namespace std;

void dzialanie(int liczba)
{
   cout<<liczba<<" ";
}

bool wczytaj(string nazwapliku)
{
 ifstream plik;
 plik.open(nazwapliku.c_str() );
 if(!plik.good() )
      return false;

     int tab[100];
     int i=0;
     while(i=99)
     {
     plik>>tab[i];
     if(plik.good() )
     {
        dzialanie(tab[i]);
        i++;
     }
     else break;
     }
     return true;
     plik.close();

}


int main()
{
    if(!wczytaj("dane.txt") )
        cout<<"Nie znaleziono pliku";


   return 0;
}

Jeśli wiecie co może być przyczyną proszę wytłumaczcie bo jestem dopiero pocżatkujacy. 

komentarz zamknięcia: problem rozwiązany

1 odpowiedź

0 głosów
odpowiedź 14 lipca 2018 przez profesorek96 Szeryf (91,420 p.)
wybrane 14 lipca 2018 przez Nowacx02
 
Najlepsza

Po pierwsze linie w plikach są numerowane od 1 a nie jak tablice od 0. Po drugie polecam stosować taką pętlę.

while(!plik.eof())
{
//odczyt do napotkania znaku konca pliku
}

Tak poprawiony kod powinien być ok :)

#include <fstream>
#include <iostream>
#include <string>

using namespace std;

void dzialanie(int liczba)
{
	cout << liczba << " ";
}

bool wczytaj(string nazwapliku)
{
	ifstream plik;
	plik.open(nazwapliku.c_str());
	if (!plik.good())
		return false;

	int tab[100];
	int i = 0;
	while (!plik.eof())
	{
		plik >> tab[i];
		if (plik.good())
		{
			dzialanie(tab[i]);
			i++;
		}
		else break;
	}
	return true;
	plik.close();

}


int main()
{
	if (!wczytaj("dane.txt"))
		cout << "Nie znaleziono pliku";


	return 0;
}

 

komentarz 14 lipca 2018 przez Nowacx02 Obywatel (1,060 p.)
ale te wszystkie liczby są w 1 linii tylko oddzielone spacją np. 1 2 3 4 5...
komentarz 14 lipca 2018 przez profesorek96 Szeryf (91,420 p.)
Na końcu lini wstaw jakiś biały znak czy to enter czy spacje i będzie działać.
komentarz 14 lipca 2018 przez Nowacx02 Obywatel (1,060 p.)

@profesorek96, dzięki wielkie za podpowiedź z tym plik.eof, ale nadal wypisuje te liczby do 99

 

komentarz 14 lipca 2018 przez Nowacx02 Obywatel (1,060 p.)
a dobra sorry nie przeczytałem twojego komentarza :)
1
komentarz 14 lipca 2018 przez profesorek96 Szeryf (91,420 p.)
Na końcu tej lini przy za liczba 100 naciśnij enter i taki plik zapisz.

Podobne pytania

0 głosów
1 odpowiedź 180 wizyt
pytanie zadane 29 stycznia 2020 w C i C++ przez Flyin Początkujący (310 p.)
0 głosów
1 odpowiedź 128 wizyt
pytanie zadane 3 grudnia 2018 w C i C++ przez Moti Użytkownik (650 p.)
0 głosów
1 odpowiedź 523 wizyt
pytanie zadane 10 stycznia 2018 w C i C++ przez natan98 Nowicjusz (140 p.)

92,550 zapytań

141,394 odpowiedzi

319,522 komentarzy

61,935 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...