C program, random szám eltalálása feladat, megoldá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!
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..
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.
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)?
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!