Kezdőoldal » Számítástechnika » Programozás » C program, random szám eltalál...

C program, random szám eltalálása feladat, megoldás?

Figyelt kérdés

A feladat a következő:Készítsen egy számkitaláló programot! A program kitalál véletlenszerűen egy pozitív egész számot (1 és 1000 között), a felhasználó pedig addig tippel, amíg meg nem találja a keresett számot. A program minden tipp után megmondja, hogy a felhasználó tippje kisebb vagy nagyobb a keresett értéknél. Ha eltalálta, akkor pedig azt. Ilyenkor egyúttal be is fejeződik a program futása. • Segítség: getline( [link] toi( [link] szame( [link] do while


Én eddig jutottam: [link]

scanffel, szerintem meg tudnám csinálni, de szeretném tudni a megoldást getlinenal.

Előre is köszönöm a segítséget!



2015. nov. 23. 18:35
1 2 3
 1/22 anonim ***** válasza:
Eddig jól néz ki? Lefordul? Ha igen helyesen fut? Hol akad el?
2015. nov. 23. 20:20
Hasznos számodra ez a válasz?
 2/22 A kérdező kommentje:

[link] itt vannak a hibák.

A sorok: [link]

A ,,sztring" tömb char típusú, ugye mert getlinenal csak azt lehet bekérni(?), és így nem tudom összehasonlítani a random számmal. Nem lehetne átalakítani a bekérés után int típusúra?:o

2015. nov. 23. 20:41
 3/22 anonim ***** válasza:
Át lehet alakítani, használd at atoi() függvényt.
2015. nov. 23. 21:12
Hasznos számodra ez a válasz?
 4/22 A kérdező kommentje:

Működik, a viszonyítást jól csinálja, de valamiért kilépek a do whileból akkor is amikor nem egyezik meg a szám..

[link]

2015. nov. 23. 21:38
 5/22 anonim ***** válasza:
Mert illogikus a while-ban szereplő feltétel. Hajtsa végre az utasításokat, amíg egyenlő a kitalálandó szám a bevitellel? Tehát ha nem találja el elsőre, ki is lép a ciklusból.
2015. nov. 23. 21:57
Hasznos számodra ez a válasz?
 6/22 anonim ***** válasza:

Kicsit belenyúltam abba is, ami a getline részben volt, mert hibásnak véltem.

Íme:


#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define ALAP 10

#define LIMI 4


int szame(char s[])

{

int i = 0;

do

{

if ( s[i]<'0' || s[i]>'9') return 0;

i++;

}

while (i < LIMI-1);

return 1;

}


int toi(char s[])

{

int i, eredmeny = 0;

for(i=0; s[i]!=0; ++i) eredmeny = eredmeny * ALAP + s[i] - '0';

return eredmeny;

}



int getline(char s[],int lim)

{

int i,c;

for(i=0; i<lim-1 && (c=getchar())!=EOF && c!='\n'; ++i) s[i]=c;

s[i]='\0';

while(c!=EOF && c!='\n') c=getchar();

return i;

}

int main()

{

srand(time(NULL));

int random=rand() % 1000 + 1;


printf("Irjon be egy szamot 1 es 1000 kozott:\n");


int szam = -1;

do

{

char sztring[LIMI];

getline(sztring,LIMI);


if (szame(sztring))

{

szam = toi(sztring);

}

else

{

printf("A megadott szam ervenytelen!");

continue;

}


if(szam>random)

{

printf("A megadott szam (%d) nagyobb,probalkozzon ujra.\n",szam);

}

else if(szam<random)

{

printf("A megadott szam (%d) kisebb, probalkozzon ujra\n",szam);

}


}

while(szam!=random);


printf("A megadott szam helyes\n");


return 0;

}



Ha valami nem világos szólj. Én így értettem, amit szerettél volna. A continue dolgot nem sokan szeretik, ha zavar, akkor át lehet alakítani if szerkezetre. Azt csinálja, hogy újból kezdi a ciklust és a lenti részt már nem veszi figyelembe.

2015. nov. 24. 02:32
Hasznos számodra ez a válasz?
 7/22 anonim ***** válasza:
Lehet, hogy le vagyok robbanva már, de ez a getline függvény szerintem mehetne a lecsóba ilyen formában. Az utolsó sorára egyáltalán nincs szükség.
2015. nov. 24. 02:41
Hasznos számodra ez a válasz?
 8/22 A kérdező kommentje:

Pont este amikor lefeküdtem rájöttem, hogy a while feltétele szar, "!="-nek kéne lennie és így jó lett , illetve bevíttem a getline hívását a do while ciklusba

[link] Köszi szépen a válaszokat!:)

Lucifer el tudnád mondani mi a rossz a getlineba(nem én írtam azt hanem úgy másoltam be)?

2015. nov. 24. 10:08
 9/22 anonim ***** válasza:
s[i]='\0'; Mit csinál és hová?
2015. nov. 24. 13:27
Hasznos számodra ez a válasz?
 10/22 anonim ***** válasza:
A while rész meg felesleges ahogy van.
2015. nov. 24. 13:30
Hasznos számodra ez a válasz?
1 2 3

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!