• 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

Mały hosting, OGROMNE możliwości
0 głosów
756 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 416 wizyt
0 głosów
1 odpowiedź 207 wizyt
pytanie zadane 30 września 2016 w C i C++ przez Radekol Bywalec (2,880 p.)
0 głosów
0 odpowiedzi 162 wizyt
pytanie zadane 25 grudnia 2016 w C i C++ przez Lembaz Nowicjusz (120 p.)

93,717 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,261 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...