C programozás segítség?
Hali, a feladat az, h van egy string és a stringből saját függvénnyel ki kell válogatni a számokat. Ugye a mainbe meg kell jelennie annak h hány db szám van, majd egy másik függvénnyel kiírni a tömböt.
#include <stdlib.h>
#include <stdio.h>
void fv(char *p, char *q);
void fv1(char *q);
int main()
{
char s[25]="T2u5k6 D8ap8ij4r";
char t[25];
int db=0;
fv(s,t,db);
fv1(t);
return 0;
}
void fv(char *p, char *q)
{
int i,j=0;
for(i=0;i<25;i++)
{
if(*(p+i)>='1' && *(p+i)<='9')
{
*(q+j)=*(p+i);
k++;
j++;
}
}
}
void fv1(char *q)
{
printf("\szamok: %s\n",q);
}
idáig jutottam, de ez ugye csak kiválogatja, majd kiírja a számokat. De a darabszámot nem számolja?
Ezt hogy kéne alakítani, h a darabszámokat is mutassa?
(eredetileg a feladat ugy szólt, hogy a visszatérési érték a darabszám legyen, majd másik függvénnyel irassuk ku a tömböt)
valaki tudna segíteni?
Először is egy tanács:
A változókat igaz lehet egy betüvel is jelölni, de mégis csak jobb ha látod, hogy mi minek a változója. Ez számodra olvashatóbbá teszi a programot.( meg másoknak is ha netán javítják a felatodat) Ez még nem hiba.
A nagyobb hiba ebből a szempontból: az fv1 elnevezés: ez nagyon nem jó, később ha visszanézed a feladatot fogalmad. sem lesz, hogy mit csináltál, csak utána érted meg, hogy visszanézed a függvény utasításait, nevezd el valogat-nak vagy valami beszédesebb névnek.
Harmadik tanács:
if(*(p+i)>='1' && *(p+i)<='9') helyett létezik isnumeric függvény is, ami meghatározza az argumentumáról, hogy numerikus-e, és akkor spórolsz egy kicsit a kóddal.
A negyedik nekem olyan mintha magad sem értenéd a kódodat. Ha értenéd, akkor látnád, hogy a fgv-be ha beletennél még egy integer pointer tipusú változót, aminek értéke legyen kapásból 0.
akkor feltételben növelhetnéd az értékét.
szerintem szépen így nézne ki a kódod:
#include <stdio.h>
#include <string.h>
int valogat( char *szovegbemenet, char *szovegkimenet)
{
int ciklus;
int j=0;
int k=0;
for( ciklus=0;ciklus<strlen(p);ciklus++)
{
if(isnumeric(*(szovegbemenet+ciklus)
{
*(szovegkimenet+j)=*(szovegbemenet+ciklus);
j++;
k++;
}
}
return k;
}
Ezt aztán meghívod ez a függvény szétválogatja neked és meg is határozza a számát.
De ez a kódodban is benn volt, csak nem tudtad, hogy add át a main függvénynek ezt a változót.
A return a visszatérési értéket jelenti, azaz ha meghívod akkor visszatér a válogatott elemek számával. Ennyi a feladat.
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!