Kezdőoldal » Számítástechnika » Programozás » C++ programozás HELP?!

C++ programozás HELP?!

Figyelt kérdés

Az alábbi feldatban kéne segítség! Hogyan kell fájlból olvasást függvénnyel megoldani?

Hogyan tudom nagybetűssé alakítani a szöveget, ha a toupper()számként adja vissza?



Írj egy programot, ami bekér a felhasználótól egy fájlnevet, beolvassa az összes szöveget a fájlból, majd bekér egy másik fájlnevet, és a megadott fájlnéven elmenti az első fájl tartalmát csupa nagybetűssé alakítva. A programban 3 külön függvényben szerepeljen a fájlbeolvasás és a fájlba kiírás, illetve a string csupa nagybetűssé alakítása.



2018. nov. 28. 20:19
 1/10 anonim ***** válasza:
Mit írtál eddig? Hol akadtál el? Imádom mikor szabtok ilyen "apróságokat" kihagyni...
2018. nov. 28. 20:24
Hasznos számodra ez a válasz?
 2/10 A kérdező kommentje:

Egy ilyenem van ami nyilvánvalóan nem működik :D

Az egyik fő problémám a fájlból olvasás függvénnyel való megoldása. A másik amint említettem, hogy hogyan lehet legegyszerűbben átalakítani a szöveget nagybetűssé.

(Kérlet ne ítélj el a kódom láttán :) )


#include<iostream>

#include<fstream>

using namespace std;


string beolvas(string fname){

ifstream fn(fname);

if (fn.fail())

cerr<<" A fájl megnyitása nem sikerült!"<<endl;


string szoveg;


fn>>szoveg;

if (fn.bad())

cerr<< "Hiba a beolvasasnal! "<<endl;

return szoveg;

}

string atalakit (string kicsi){

string nagy;

for (int i=0;i<kicsi.size();i++)


nagy.push_back( char(toupper(kicsi[i])));

return nagy;

}

void kiiras(string nagybetus,string fajlnev1){

ofstream kf(fajlnev1);

kf<<nagybetus<<endl;

return;



}


int main(){

string fajlnev;

cout<<" Adj meg egy fajlnevet "<<endl;

cin>> fajlnev;

string text=beolvas(fajlnev);

string nagybetus=atalakit(text);

string fajlnev1;

cout<<" Adj meg egy fajlnevet "<<endl;

cin>> fajlnev1;

kiiras(nagybetus,fajlnev1);



}

2018. nov. 28. 20:30
 3/10 A kérdező kommentje:
Ha a kisbetus.txt-be space nélkül írom le a szöveget, akkor sikerül nagybetűssé alakítani. Hogyan lehet megoldani, hogy ne csak space-ig alakítsa át?
2018. nov. 28. 20:53
 4/10 anonim ***** válasza:
Ez hol feladat, középsuli vagy fősuli?
2018. nov. 28. 21:39
Hasznos számodra ez a válasz?
 5/10 A kérdező kommentje:
Egyetem, why?
2018. nov. 28. 21:46
 6/10 anonim ***** válasza:

Jó egyetem lehet...

"toupper()számként adja vissza"

ez így blődség, a toupper int-et ad vissza, ami egy KARAKTER kódja. Mivelhogy ehhez illene tudni, hogy a toupper nem string-függvény, hanem karakterre van értelmezve.

Állj neki totál előlről, mert marhaság így a kódod.

Amit tegyél: megnyitsz egy fájlt olvasásra (amit kell).

Megnyitod írásra a másikat. Az egyikből olvasol karaktereket EOF-ig. Minden karakter toupper visszatérési értékét írod a másik fájlba. A getchar és putchar függvényeknek van file megfelelője, talán fgetc(??), de ne kövezzetek meg ha más, azt használd.

2018. nov. 29. 00:40
Hasznos számodra ez a válasz?
 7/10 tabaki ***** válasza:

Nekem így le sem fordul, nem tudom, te hogy csináltad, hogy egyáltalán funkcionális problémáid adódtak. Én nem értek a C++-hoz sem, úgyhogy nem ítélem el a kódodat, egyszerűen megpróbáltam működőképessé kínozni -- ami vállalhatatlan, azért ám viseld te a világ nyelvét, én mosom kezeimet.

A program működik ebben a formájában is, néhány módosítással. Először is, az író/olvasó függvények C-stílusú string paramétert várnak, tehát pl. így hívhatod meg őket:

ifstream fn(fname.c_str());

ofstream kf(fajlnev1.c_str());

Másodszor: Ha az egész sort akarod beolvasni, akkor az egyszerű fn >> szoveg helyett értelemszerűen a sort olvasó függvényt (vagy mifenét) használd, mondjuk így:

getline(fn, szoveg);

Harmadszor: A

for (int i = 0; i < kicsi.size(); i++) feltételben előjeles típust akarsz előjel nélkülivel összehasonlítani, amit legalábbis egy warning erejéig kifogásol a fordító. A kiengesztelésére elfogadható ötletnek tűnik, hogy a ciklusváltozó is unsigned legyen, mert miért ne lehetne:

for (unsigned int i = 0; i < kicsi.size(); i++)

Negyedszer: Mindez egyetlen soron belül dolgozik, ha tehát többsoros szöveget akarsz átalakítani, akkor nyilván ciklusban, EOF-ig kell olvasgatnod és irkálnod, ezzel én nem foglalkoztam.

Ötödször: Nem t'om, C++ hogy van ez, de más nyelvek alapján énnekem hiányzik a fájlok lezárása.

2018. nov. 29. 01:54
Hasznos számodra ez a válasz?
 8/10 tabaki ***** válasza:
+ Nem t'om, C++-BAN hogy van ez... stb.
2018. nov. 29. 01:56
Hasznos számodra ez a válasz?
 9/10 A kérdező kommentje:

Köszönöm szépen a válaszokat! :)

Mellesleg nem készülök programozónak, nem is ezt tanulom. Most írtam ilyen kódot először, ezért is kértem, hogy ne ítéljetek el :)

2018. nov. 29. 12:45
 10/10 sharkxxx ***** válasza:
50%
2018. nov. 29. 13:11
Hasznos számodra ez a válasz?

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!