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?
#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;
}
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
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;
}
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!