Kezdőoldal » Számítástechnika » Programozás » Ezzel a C++ programmal egy...

Ezzel a C++ programmal egy fájlban lévő 10 szám közül kiválasztjuk a legnagyobbat és azt beírjuk a fájl egy újabb sorába. Ezt el is végzi a program, de a fordító szerint hibával áll meg a program. Miért?

Figyelt kérdés

#include <iostream>

#include <fstream>

using namespace std;


int main() {

ifstream fajl2( "feladat2.txt" );

int elemszam;

if ( fajl2.is_open() && !fajl2.eof() ) {

fajl2 >> elemszam;

double tomb[elemszam];

for (int i=0; i < elemszam && !fajl2.eof(); i++) {

fajl2 >> tomb[i];

}

double max = tomb[0];

for (int i=1; i < elemszam; i++) {

if (tomb[i] >= max) {

max = tomb[i];

}

}

cout << max;

fajl2.clear();

fajl2 << endl << max;

fajl2.close();

} else {

cout << "Hiba a fajl megnyitasakor" << endl;

}

return 0;

}



2017. szept. 6. 18:39
 1/8 anonim ***** válasza:
Tudod mit jelent az ifstream? Input file stream. És mit próbálsz csinálni a program végén? Írni bele. Itt a probléma. Fájlba íráshoz ofstream-et kell nyitni, vagy használhatsz egyszerű fstream-et, ami írásra és olvasásra is hasnálható.
2017. szept. 6. 19:07
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:
Jajj istenem, azt véletlenül nem írtam át abban, amit beillesztettem ide. fstreammel is fennáll a probléma, amit leírtam.
2017. szept. 6. 19:27
 3/8 anonim ***** válasza:
Hát az ifstream átírása után már fordulnia kéne. De akkor a fordító hibaüzenetét légy szíves emgnézni, és ha továbbra sem tudod értelmezni, írd le ide. APropó, mivel fordítod?
2017. szept. 6. 19:34
Hasznos számodra ez a válasz?
 4/8 tabaki ***** válasza:
Leírhatnád, hogy hogyan nyitod meg fsstreammel. Nekem lefordul, működik, sőt majdnem azt csinálja, amit kell, csak valahogy levágja vagy kerekíti a végére írt számot. Biztosan ennek is megvan az oka, csak nem ismerem a C++, és túl álmos vagyok a kereséshez...
2017. szept. 7. 02:30
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:
Codeblocks mingw-vel fordítom. Lefordult már akkor is, amikor a kérdést kiírtam, csak véletlenül úgy másoltam be ide, hogy a régi verzióhoz (amiben még ifstream szerepelt) ollóztam hozzá az új verzió végét. Nekem nem kerekít.
2017. szept. 7. 14:01
 6/8 A kérdező kommentje:
Process terminated with status -1073741510 hibaüzenettel áll le a program, de megcsinálja amit kell.
2017. szept. 7. 14:02
 7/8 tabaki ***** válasza:

Na jó, talán a legegyszerűbb, ha ideírom az én változatomat. Én Geanyből fordítottam GCC-vel, de most kipróbáltam Code::Blocks-szal, úgy is megy.


#include <iostream>

#include <fstream>

using namespace std;


int main() {

      int elemszam;

      fstream fajl2( "feladat2.txt", fstream::in | fstream::out | fstream::app);

      if ( fajl2.is_open() && !fajl2.eof() ) {

            fajl2 >> elemszam;

            double tomb[elemszam];

            for (int i=0; i < elemszam && !fajl2.eof(); i++) {

                  fajl2 >> tomb[i];

                  }

            double max = tomb[0];

            for (int i=1; i < elemszam; i++) {

                  if (tomb[i] >= max) {

                  max = tomb[i];

                  }

            }

      cout << max;

      fajl2.clear();

      fajl2 << endl << max;

      fajl2.close();

      } else {

      cout << "Hiba a fajl megnyitasakor" << endl;

      }

return 0;

}


Nálam a feladat2.txt tartalma a következő:


10

145.3684

149.36423

1495.1978

9953.4896

1249.5698

859.4785

781.5698

354

397.11

645.4247

2017. szept. 7. 15:10
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:

Végül így oldottam meg, és ekkor nincs hibaüzenet:


#include <iostream>

#include <fstream>

using namespace std;


int main() {

fstream fajl2( "feladat2.txt" );

if ( fajl2.is_open() && !fajl2.eof() ) {

double min;

fajl2 >> min;

double aktualis_elem;

while ( !fajl2.eof() ) {

fajl2 >> aktualis_elem;

if ( aktualis_elem < min ) {

min = aktualis_elem;

}

}

cout << "A fajlban szereplo legkisebb ertek: " << min;

fajl2.clear();

fajl2 << min;

fajl2.close();

} else {

cout << "Hiba a fajl megnyitasakor" << endl;

}

return 0;

}

2017. szept. 11. 14:37

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!