Miért nem fut rendesen C++?
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream BefB("sokszamB.txt");
ofstream KifB("1.txt");
int a,b,c;
string sor;
while(getline(BefB,sor)){
for(int i=0;i<sor.size();++i){
if(sor[i]%2==0)BefB>>a;
if(sor[i+1]%2==0)BefB>>b;
if (a>b) c=b;
else c=a;}}
KifB<<"Legkisebb paros szam:"<<c<<endl<<endl;
}
A beolvasott file legkisebb páros számát kéne kiíratni.
De egy nagyon sok soros file-nak a 3. sorának a közepéről dob ki egy értéket. Valami javaslat?
getline(BefB,sor):A getline az aktuális pozíciótól sorvégjelig olvassa be "sor" string típusú változóba.
Ezután a következő fájl olvasás műveletek a következő sortól folytatódnak.
Beolvastad az első sort utána feltétel szerint BefB>>a vagy BefB>>b hajtja végre, mely olvasási műveletek a 2.-ik sortól kezdve történnek, lehet hogy a keresett szám az első sorba van, de ezt lehetetlen hogy megtalálja mert "a" és "b" változó a 2.-ik sortól kezdve kaphat értéket leghamarabb.
sor[i] nem az i-edik szám a sor-ba hanem az i-edik karakter, itt azt vizsgálod hogy a beolvasott sor i-edik karakterének ASCII kódja páros szám e(mint már írtam a szóköz ASCII kódja páros,mivel a gép mindent számként ábrázol, így a karaktereket is méghozzá ASCII kódtáblázat szerint) Vagyis karakterenként megvizsgálod a "sor" string-et és ha az aktuális karakter ASCII kódja páros akkor a következő sorból olvasol int-ként egy számot.
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!