Jump to content
GSForum - Segélyvonal

Programozás C/C++-ban


Recommended Posts

Posted

    istream& std::getline( istream& is, string& s );
    istream& std::getline( istream& is, string& s, Char delimiter );

Nem feltétlenül kell megadnod méretet.

Posted

Kicsit átdolgoztam a progit:

#include<iostream>
#include<fstream>
#include<string>


using namespace std;

int main()
{
//1. feladat:
cout << "1. feladat: " << endl;
ifstream be("sms.txt");

int ora[100], perc[100], telszam[100];
int k;
string uzi[100];
be >> k;
for(int i=0; i<k; i++)
{
        be >> ora[i];
        be >>  perc[i];
        be >>  telszam[i]; //Na ide kellene egy sor, ami beolvassa a 3 szám után következõ üzenetet.
        
}
for(int i=0; i<k; i++)
{
        cout << ora[i] << " " << perc[i]<< " " << telszam[i] << endl;
        cout << uzi[i] <<endl;
}
system("pause");
be.close();
return 0;   
}

Amit írtál, úgy nézem, hogy teljesen más módszerrel nyitja meg a fájlt. Így a program szóközönként olvassa be az adatokat a változókba. Arra volna szükség, ha eléri a sor végét, akkor a teljes következõ sort olvassa be. Így sajna leállna az elsõ szó után.

Posted

 #include<iostream>
#include<fstream>
#include<string>

using namespace std;

int main()
{
ifstream be("sms.txt");

int ora[100], perc[100], telszam[100];
int k;
string uzenet[100], temp;

be >> k;

for(int i=0; i<k; i++)
{
        be >> ora[i];
        be >> perc[i];
        be >> telszam[i];
        getline(be, temp);
        getline(be, uzenet[i]);
        
}
for(int i=0; i<k; i++)
{
        cout << ora[i] << " " << perc[i]<< " " << telszam[i] << endl;
        cout << uzenet[i] <<endl;
}
system("pause");
be.close();
return 0;   
}

 

A harmadik "be >> ... " fajta beolvasás nem rakta új sorba a mutatót és ezért a sorból megmaradt maradékot "lenyelettem" egy getline-al, így a kövi sorba ugrott a mutató. Igazából a temp tök fölösleges, mert ha kétszer adnék értéket az "uzenet" változónak az is tökéletes lenne, csak gondoltam így átláthatóbb egy kicsit.

Posted

Olyat lehet csinálni, hogy egy függvény több visszatérési értéket adjon vissza?

Posted
Olyat lehet csinálni, hogy egy függvény több visszatérési értéket adjon vissza?

A függvénynek egy visszatérési értéke van, az viszont tetszõleges típusú lehet. Pl. egy általad definiált rekord, ha több dolgot akarsz visszaadni. A mutató kevesebb memóriát zabál, de nehogy olyan mutatót adj vissza, amit csak a függvénytörzsben használsz, mert akkor nagyon csúnya dolgokat fogsz látni.

  • 1 month later...
Posted

Olyant szeretnék csinálni, hogy megszámolom, mennyi szó van egy fájlban. A szavak "sorvége" jellel vannak elválasztva. Nos úgy gondoltam indítok egy ciklust, ami megy a fájl vége jelig, és ha sorvége jelet talál növel egy értéket. Na de hogy adom meg a ciklusnak, hogy sorvégéig, vagy fájlvégéig menjen?

Posted
int db=0;
char[256] temp;

ifstream olvas("fajl.txt");
if(!olvas) {cerr<<"HIBA\n"; exit(1);}

while(!olvas.eof())
{
    olvas.getline(temp,256);
    db++;
}

Posted

Kösz. Nem pont így oldottam meg, de jó ötletet adtál.

// Sorok számának megállapítása
    ifstream szoell("szavak.txt");    
    int sorsz=0;
    string sorvege;
    for(int i=0; !szoell.eof();i++)
    {
    getline(szoell,sorvege);
    sorsz=i;
    }
    // vége

Posted

Helo,

 

Lenne egy olyan problémám, hogy egy mátrixban kell megvizsgálnom az oszlopokat, hogy van-e benne 0-a.

 

 

A 2 C++ megoldo függvényem a következõ:

 

Ha minden oszlopban van nulla akkor lesz igaz.

bool Minden_nyelven (const vector < vector <int> > &tanulok)
{
    bool l=false;

    for (int i=0; !l && i<tanulok.size(); ++i)
    {
        if (Nulla (i,tanulok)) l=true;

    }
    return l;
}

Vizsgálja azt, hogy van-e az oszlopban nulla. 

bool Nulla (int i, vector< vector <int> > tanulok)
{
    bool l=true;
    int j = 0;
    int s=0;

    while(l && j<tanulok[i].size() ){
        l=(tanulok[i][j] == 0);
        j++;
    }
    return l;
}

Posted

Igazából nincs kérdés feltéve, de néhány észrevétel:

1. a Minden_nyelven függvény nem vizsgálja a 0 indexû oszlopot.

Szerintem nem ++i, hanem i++ kéne a for ciklusba.

2. a Minden_nyelven függvény nem akkor ad igaz értéket, ha minden oszlopban van nulla, hanem ha az egyikben van nulla.

 

 

Posted

Azt hogy lehet megcsinálni konzolos proginál, hogy a program csak egy karaktert fogadjon el a szövegbevitelnél? Mármint nem úgy, hogy csak az első karaktert olvassa be, hanem nem engedi, hogy egynél több karaktert beírjon a felhasználó.

Posted
Igazából nincs kérdés feltéve, de néhány észrevétel:

1. a Minden_nyelven függvény nem vizsgálja a 0 indexû oszlopot.

Szerintem nem ++i, hanem i++ kéne a for ciklusba.

2. a Minden_nyelven függvény nem akkor ad igaz értéket, ha minden oszlopban van nulla, hanem ha az egyikben van nulla.

 

Akkor azt hogyan lehetne beírni, hogy akkor azt adja vissza, hogy minden oszlopban van nulla?

Posted
bool Minden_nyelven (const vector < vector <int> > &tanulok)
{
    bool l=true;

    for (int i=0; l && i<tanulok.size(); i++)
    {
        l=Nulla (i,tanulok);
    }
    return l;
}

Posted

Köszi arpsoft.

 

Következõ probléma:

Ugyan ilyen oszlopvizsgálat, csak most azt kell visszaadnom, hogy ha mér van egy olyan oszlop aminek az összes eleme nagyobb, mint nulla, akkor igaz.

A baj, hogy akkor is igaz választ kapok, ha minden oszlopban van egy nulla. Ennek ugye hamisnak kellene lennie.

Specifikacio alapján van elkészítve a 2 megoldó függvény, de mégsem mûködik.

 

pl.

2-----23

0-----82

12----0

 

 

bool Minden_nyelven (const vector < vector <int> > &tanulok)
{
    bool l = false;
    int i=0;

    while (!l && i<tanulok.size())
    {
        l = (Nem_nulla (i, tanulok));
         i++;

    }
    return l;
}

bool Nem_nulla (int i, vector< vector <int> > tanulok)
{
    bool l = true;
    int j = 0;

    while (l && j<tanulok[i].size() ){
        l = (tanulok[i][j] != 0);
        j++;

    }
    return l;
}

Posted

Sorokat vizsgálsz, és nem oszlopokat.

 

@arpsoft

Mi bajod a ++i-vel? Az a jó. Az i++ mielõtt megnöveli i-t, létrehoz róla egy másolatot, amit ha nem használsz fel, akkor azonnal el is dob. A sima növelés az ++i. Nálunk ezért ölnek.

Posted

Akkor hogy írjam át, hogy végre oszlopokat vizsgáljon?

Posted

KGigi:

az a gondom vele, hogy a ++i és az i++ között van egy hatalmas különbség:

++i: elõször növel, aztán értékel

i++: elõször értékel, aztán növel

 

Bár ez lehet, hogy a for ciklusban nem játszik túl nagy szerepet, inkább csak akkor, ha ez állt volna ott:

for (int i=0; l && ++i<tanulok.size();)

Mert itt már nem mindegy. Itt már csak ez lenne helyes:

for (int i=0; l && i++<tanulok.size();)

 

Posted

@BearVsMan

Egyszerű, a második index legyen rögzített, és ne az első.

 

@arpsoft

Ilyenkor valóban számít. De egy sima for ciklusban (int i=0; i < (int)t.size(); ++i) csak egy felesleges másolást generál, ráadásul a ciklusmag minden egyes lefutásakor. Amit te írsz, arra én már egészen biztosan while ciklust írnék, pont az ilyen lehetséges hülye hibák miatt. Alacsony szintű kódban nem lesz különbség, a for ciklus a C++-ban csak egy elfedett while ciklus.

Posted
@BearVsMan

Egyszerû, a második index legyen rögzített, és ne az elsõ.

 

 

Már próbálam így:

while (l && j<tanulok[i].size() ){
        l = (tanulok[j][i] != 0);
        j++;

    }

Ugyan úgy rossz eredményt kapok.

Posted

Persze. Mert nem stimmel a méret. Oszlopon akarsz végigmenni, de a sor hosszáig mész. Igazából miért így csinálod? Írj egy sima egymásba ágyazott ciklust.

Posted

Egy olyan függévnyt keresnék ami kisbetûs string-bõl nagybetûset csinál. Ha csak a string egyik karakterét tudja csak átalakítani, az sem baj. Találtam egy toupper() függvényt, de az valamiért nem akar mûködni :S

Posted

És mit ír hibának? Gondolom az int miatt.

Posted
Persze. Mert nem stimmel a méret. Oszlopon akarsz végigmenni, de a sor hosszáig mész. Igazából miért így csinálod? Írj egy sima egymásba ágyazott ciklust.

 

Azért mert ez prog beadandóm és függvényben a függvény-el kell megoldani.

Persze lehet, hogy elfogaja a tanarom úgy is, ha simán megírom 1 függvényben.

De már ígyis visszaadta és így már csak 4est kapok ra.

Minden esetre megpróbálom az egymásba ágyazott ciklussal. De kíváncsi lennék a 2 függvényes helyes megoldásra is. Csak tanulhatok belõle.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...