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

question-closed Problem z wyliczyniem i zapisaniem średniej, c++ Builder 6

Object Storage Arubacloud
0 głosów
339 wizyt
pytanie zadane 15 października 2016 w C i C++ przez qwerty723446 Obywatel (1,750 p.)
zamknięte 15 października 2016 przez qwerty723446

Witam!

Piszę program, który ma wczytywać z 2 plików liczby typu float, sprawdzać, czy są takie same, jeżeli tak, to dodawać do nich inta, wygenerowanego przez program, a następnie podzielić wynik przez 2 i zapisać go do 2 różnych plików. Niestety, wystąpił problem, który sprawia, iż program nie czyta odpowiednio wczytywanych liczb z plików i przez to wypisuje głupoty. Fragment kodu:

 float liczba1=0.0;   
 float liczba2=0.0;
 float wynik=0;

 fstream p1;
 fstream p2; 
 p1.open("plik1.txt", ios::in | ios::out);
 p2.open("plik2.txt", ios::in | ios::out);
 p1>>liczba1;
 p2>>liczba2;
 if(liczba1==licba2)
 {
  wynik=(liczba1+IntToFloat(wygenerowanaliczba))/2;
  p1<<wynik;
  p2<<wynik;
 }
 p1.close();
 p2.close();  

Może ktoś mi wskazać, gdzie mam błąd?

komentarz zamknięcia: Rozwiązano
komentarz 15 października 2016 przez Patrycjerz Mędrzec (192,320 p.)
Co oznacza, że "wypisuje głupoty"?
komentarz 15 października 2016 przez qwerty723446 Obywatel (1,750 p.)
Na przykład zamiast 4.5 wypisuje 2. Coś tego typu.

1 odpowiedź

+1 głos
odpowiedź 15 października 2016 przez Patrycjerz Mędrzec (192,320 p.)
wybrane 15 października 2016 przez qwerty723446
 
Najlepsza
Może masz przecinek zamiast kropki w pliku?

Należy też podkreślić, że kursory odczytu i zapisu są różnymi bytami i manewruje się nimi całkowicie oddzielnie, więc jeśli chcesz zapisać nową liczbę pod starą, powinieneś najpierw zmienić pozycję kursora zapisu.

Z tego, co wiem, operowanie na dwóch plikach jednocześnie może powodować awarie, więc sprawdź na wszelki wypadek także ten aspekt.

EDIT: Napisałem nieprawdę z tą oddzielnością kursorów - oba są poruszane w tym samym czasie.
komentarz 15 października 2016 przez qwerty723446 Obywatel (1,750 p.)
Po kolei: w pliku mam kropkę, więc to nie to.

W oryginalnym programie mam odczyt i zapis osobno, tylko tutaj mam skróconą wersję, dla wygody, więc to nie to.

Teraz sprawdziłem tą możliwą awarię, ale wyłączanie pliku przed otwarciem następnego też nic nie daje.
komentarz 15 października 2016 przez qwerty723446 Obywatel (1,750 p.)
Tak w ogóle, to zauważyłem, iż nigdy do pliku nie zapisuje się liczba większa od 3 i mniejsza od 1
komentarz 15 października 2016 przez Patrycjerz Mędrzec (192,320 p.)

Wyczyść flagi błędów każdego z pliku po wczytaniu za pomocą metody clear.

komentarz 15 października 2016 przez qwerty723446 Obywatel (1,750 p.)
I nic
komentarz 15 października 2016 przez Patrycjerz Mędrzec (192,320 p.)
Pokaż cały kod.
komentarz 15 października 2016 przez qwerty723446 Obywatel (1,750 p.)
Znalazłem stary program z podobnym systemem i przepisze to do nowego. Powinno zadziałać. Czekaj...
komentarz 15 października 2016 przez qwerty723446 Obywatel (1,750 p.)
Działa! Dzięki za pomoc, masz łapkę w górę.
komentarz 15 października 2016 przez qwerty723446 Obywatel (1,750 p.)
Wystarczyło przenieść float liczba 1 i liczba 2 i wynik na samą górę, jest jakiś błąd, który powoduje złe wczytywanie tuż pod kodem.

Podobne pytania

0 głosów
0 odpowiedzi 321 wizyt
0 głosów
1 odpowiedź 105 wizyt
pytanie zadane 30 września 2016 w C i C++ przez Radekol Bywalec (2,880 p.)
0 głosów
0 odpowiedzi 91 wizyt
pytanie zadane 25 grudnia 2016 w C i C++ przez Lembaz Nowicjusz (120 p.)

92,555 zapytań

141,403 odpowiedzi

319,555 komentarzy

61,940 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!

...