[C++] modyfikacja pliku
: 11 maja 2016, o 11:43
Mam zmodyfikować, plik, z danymi w którym są ceny i zapisac w nowym pliku z ceną śrdenią:
np
118.80 118.60
118.40 118.20
117.40 115.70
115.10 115.85
115.85 112.20
112.30 111.60
112.30 114.10
113.00 114.50
114.50 113.75
114.00 113.80
114.45 113.80
114.50 113.50
114.15 113.70
113.70 114.20
113.70 113.50
Kod wygląda tak: [edit]
W kodzie chce sprawdzić, czy ilość cen jest parzysta, oraz czy jest to wgl liczba: tzn
Ale z tym wywala mi -1 jeśli zamiast tego zrobię tak:
to wszystko jest ok, ale wtedy nie wyłapie czegoś co liczbą nie jest. Prędzej robiłem metodą pierwszą w innym zadaniu i było ok, jedyna róznica że wtedy pracowałem na intach, wie ktoś co jest nie tak?
Oraz jedno drobne pytanie dlaczego zmienna_pomocnicza1 oraz zmienna_pomocnicza2 różnią się o 1?
np
118.80 118.60
118.40 118.20
117.40 115.70
115.10 115.85
115.85 112.20
112.30 111.60
112.30 114.10
113.00 114.50
114.50 113.75
114.00 113.80
114.45 113.80
114.50 113.50
114.15 113.70
113.70 114.20
113.70 113.50
Kod wygląda tak: [edit]
Kod: Zaznacz cały
int modyfikacja_liczb(std:: string nazwa_pliku)
{
std::ifstream plik (nazwa_pliku.c_str());
float ceny1[1000]; //poczatek
float ceny2[1000]; //koniec
float ceny3[1000]; //srednia
int licznik_glowny = 0;
int licznik_pomocniczy1 = 0;
int licznik_pomocniczy2 = 0;
if(!(plik))
{
std::cout << "Nie ma takiego pliku lub nie masz do niego dostepu! "<<std::endl;
return -1;
}
else
{
std::cout << "Udalo sie otworzyc plik"<<std::endl;
while(!(plik.eof()))
{
if( licznik_glowny%2 == 0 )
{
plik >> ceny1[licznik_pomocniczy1]; //zwraca -1 jak nie jest liczba
licznik_pomocniczy1++;
}
if( licznik_glowny%2 == 1 )
{
plik >> ceny2[licznik_pomocniczy2]; //zwraca -1 jak nie jest liczba
licznik_pomocniczy2++;
}
licznik_glowny++;
}
if((licznik_glowny-1)%2 != 0) return -1; // sprawdzacz czy ilosc plikow jest parzysta, czyli czy nie brakuje 1 danej np
}
for(int i = 0; i <= licznik_pomocniczy1-2; i++)
{
ceny3[i] = (ceny1[i] + ceny2[i])/2;
}
std::cout << "Podaj w jakim pliku chcesz zapisac nowe dane: ";
std::string nazwa;
std::cin >> nazwa;
std::ofstream plik2(nazwa.c_str());
for(int k =0;k <= licznik_pomocniczy1-2 ;k++)
{
plik2 << ceny1[k] << " " << ceny2[k] << " " <<ceny3[k]<<std::endl;
}
}
W kodzie chce sprawdzić, czy ilość cen jest parzysta, oraz czy jest to wgl liczba: tzn
Kod: Zaznacz cały
if(!(plik >> ceny1[licznik_pomocniczy1])) return -1;
Ale z tym wywala mi -1 jeśli zamiast tego zrobię tak:
Kod: Zaznacz cały
plik >> ceny1[licznik_pomocniczy1];
Oraz jedno drobne pytanie dlaczego zmienna_pomocnicza1 oraz zmienna_pomocnicza2 różnią się o 1?