Új hozzászólás Aktív témák
-
shinodas
tag
Sziasztok!
Írtam gyakorlásnak egy ilyen kis egyszerű dolgot, amit el akartam érni: kérjen be két szót, tárolja 2 stringbe, majd egy harmadikba fűzze össze a kettőt. A problémám, hogy a két szó közé akarnék egy spacet beerőltetni, de nem akar működni úgy. Mit nézek el?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char string1[10];
char string2[10];
char result[20];
int r=0, n=0;
printf("Kérek egy szót!\n");
scanf("%s",string1);
printf("Kérek egy szót!\n");
scanf("%s",string2);
for(n=0;string1[n]!='\0';n++)
{
result[r]=string1[n];
r++;
}
for(n=0;string2[n]!='\0';n++)
{
result[r]=string2[n];
r++;
}
r++;
result[r]='\0';
printf("%s", result);
return 0;
} -
shinodas
tag
#include <stdio.h>
#include <stdlib.h>
int main()
{
char string1[10];
char string2[10];
char result[20];
int r=0, n=0;
printf("Kérek egy szót!\n");
scanf("%s",string1);
printf("Kérek egy szót!\n");
scanf("%s",string2);
for(n=0;string1[n]!='\0';n++)
{
result[r]=string1[n];
r++;
}
result[r++]=' ';
for(n=0;string2[n]!='\0';n++)
{
result[r]=string2[n];
r++;
}
result[r]='\0';
printf("%s", result);
return 0;
}Működik, én voltam a balf@sz Köszi mindenkinek!
-
shinodas
tag
Egy olyan kérdésem lenne, hogy, ha írok egy sajátfüggvényt, és az két értéket adna vissza, mikor meghívom a függvényemet, azt meghívásnál, hogy néz ki? Tehát pl return x,y; és ezt meghívásnál, hogy jelölöm, ha adott résznél nekem csak az x változó kéne ott? Remélem nem túl zavarosan fogalmazok, ha mégis, akkor bocsi
-
Korcsii
őstag
válasz shinodas #3311 üzenetére
Sehogy. (hmm, a legújabb C-ben vagy C++-ban nincs erre valami hákolás?)
Hozz létre egy struct-ot, és azt add vissza. Vagy adj a függvények pointer-eket is paraméterként, amiben eltárolja a végeredményeket.void fv(int a, int b, int *x, int *y) {
*x = a;
*y = b;
}[ Szerkesztve ]
-
shinodas
tag
Sziasztok! Kellemes pénteket mindenkinek!
Remélem nem probléma, hogy rengeteg kérdésem van, szóval itt egy újabb.
#include <stdio.h>
#include <stdlib.h>
int massal_magan (char result[], int *magan, int *massal);
int main()
{
char string1[10];
char string2[10];
char result[20];
int i=0;
int r=0;
int *magan=0;
int *massal=0;
printf("Kérem adjon meg egy szót!\n");
scanf("%s", string1);
printf("Kérem adjon meg egy újabb szót!\n");
scanf("%s", string2);
//kis és nagybetűs átalakítás
for(i=0;string1[i]!='\0';i++)
{
if(string1[i]>=65 && string1[i]<=90)
{
string1[i]=string1[i]+32;
}
}
string1[0]=string1[0]-32;
for(i=0;string2[i]!='\0';i++)
{
if(string2[i]>=65 && string2[i]<=90)
{
string2[i]=string2[i]+32;
}
}
string2[0]=string2[0]-32;
i=0;
//összefűzés
while(string1[i]!='\0')
{
result[r]=string1[i];
r++;
i++;
}
result[r++]=' ';
i=0;
while(string2[i]!='\0')
{
result[r++]=string2[i];
i++;
}
result[r]='\0';
printf("Az összefűzött string: %s\n", result);
massal_magan(result, *magan, massal);
return 0;
}
//SAJÁT FÜGGVÉNY
int massal_magan(char result[], int *magan, int *massal)
{
int i=0;
while(result[i]!='\0')
{
switch(result[i])
{
case 'a':
case 'e':
case 'o':
case 'i':
case 'u':
case 'A':
case 'E':
case 'O':
case 'I':
case 'U':
*magan++;
break;
default:
*massal++;
break;
}
i++;
}
return *magan, *massal;
}A gondom az értékátadással van, hogy megakarom számoltatni, a magán és mással hangzókat, ezeknek az értékét pedig pointerekkel visszaadni. Hogyan kellene ezt helyesen? A másik kérdésem pedig, hogy Mikor számolom a magánhangzókat, az ékezetes karakterekre hibát dob, mármint, pl case 'é'-re, gondolom valami kódolási gubanc, ezt hogyan lehetne kiküszöbölni?
Btw, itt főleg a 3. sorral van gondja a fordítónak, a függvénydeklarációnál[ Szerkesztve ]
-
kispx
addikt
válasz shinodas #3314 üzenetére
A függvényed így néz ki:
int massal_magan (char result[], int *magan, int *massal)
Tehát második paraméterként egy int-re mutató pointert vár.A függvényhívásod így néz ki:
int *magan=0;
//...
massal_magan(result, *magan, massal);A második paraméternél a mutatott objektumot adtad át és nem a rá hivatkozó pointert.
Röviden nem kell az índirekció művelete. ( * )Szerk.: de érdekes, hogy a 3. paraméternél jól használtad a mutatót.
[ Szerkesztve ]
-
kingabo
őstag
válasz shinodas #3314 üzenetére
A magan és a massal az miért 1-1 pointer? De ha már pointer, akkor miért nem egy létező memória területre mutatnak: másik változó, vagy általad lefoglalt memória terület?
Régen c-ztem már, de sztem a pointer helyett, mintha egy referenciát kéne átadni és akkor nem kell szenvedned a pointerezéssel. Amit -nem sértésként- de nem igazán értesz... -
shinodas
tag
Ennek így nem kellene vissza adni az értéket rendesen?
#include <stdio.h>
#include <stdlib.h>
int massal_magan (char result[], int *magan_p, int *massal_p);
int main()
{
char string1[10];
char string2[10];
char result[20];
int i=0;
int r=0;
int maganhangzo=0;
int massalhangzo=0;
int *magan_p=0;
int *massal_p=0;
magan_p = &maganhangzo;
massal_p = &massalhangzo;
printf("Kérem adjon meg egy szót!\n");
scanf("%s", string1);
printf("Kérem adjon meg egy újabb szót!\n");
scanf("%s", string2);
//kis és nagybetűs átalakítás
for(i=0;string1[i]!='\0';i++)
{
if(string1[i]>=65 && string1[i]<=90)
{
string1[i]=string1[i]+32;
}
}
string1[0]=string1[0]-32;
for(i=0;string2[i]!='\0';i++)
{
if(string2[i]>=65 && string2[i]<=90)
{
string2[i]=string2[i]+32;
}
}
string2[0]=string2[0]-32;
i=0;
//összefűzés
while(string1[i]!='\0')
{
result[r]=string1[i];
r++;
i++;
}
result[r++]=' ';
i=0;
while(string2[i]!='\0')
{
result[r++]=string2[i];
i++;
}
result[r]='\0';
printf("Az összefűzött string: %s\n", result);
massal_magan(result, magan_p, massal_p);
printf("Mássalhangzók száma: %d\n", *massal_p);
return 0;
}
//SAJÁT FÜGGVÉNYEK
int massal_magan(char result[], int *magan_p, int *massal_p)
{
int i=0;
while(result[i]!='\0')
{
switch(result[i])
{
case 'a':
case 'e':
case 'o':
case 'i':
case 'u':
case 'A':
case 'E':
case 'O':
case 'I':
case 'U':
*magan_p++;
break;
default:
*massal_p++;
break;
}
i++;
}
return *magan_p;
return *massal_p;
}Mert olyan, mintha nem adná vissza...
Esetleg tudtok mutatni egy leírást, hogy ne itt kérdezzek hülyeségeket? Konkrétan erre a problémára nem találtam a google-ben választ, bár biztos van, csak rossz helyen keresem[ Szerkesztve ]
-
Jester01
veterán
válasz shinodas #3318 üzenetére
A két return-nek nincs értelme.
A *magan_p++; pedig nem az értéket növeli, hanem a pointert. Helyesen (*magan_p)++; MOD: illetve a talán olvashatóbb *magan_p += 1; forma. Nyilván ugyanez vonatkozik a massal_p-re is.Érdemes a fordító figyelmeztető üzeneteit bekapcsolni és átgondolni. Jelen esetben például:
t.c: In function 'massal_magan':
t.c:86: warning: value computed is not used
t.c:89: warning: value computed is not used
t.c:96: warning: will never be executedJa egyébként nem minden mássalhangzó ami nem magánhangzó (például a szóköz, számok, írásjelek)
[ Szerkesztve ]
Jester
-
kingabo
őstag
válasz shinodas #3318 üzenetére
Egyrészt az fv meghívásakor a visszatérési értéket semmilyen változónak nem adod értékül, másrészt a 2 return nem tud végrehajtódni, ugyanis már első után befejeződik a függvény. Jelen esetben a függvényednek void-nak kéne lennie, és nem kell a végére return.
Egyébként a problémádra itt #4 JackOfAllTrades hsz-e mutat egy pl-t, erre a megoldásra céloztam fentebb.
Korábban a pointerekről írtam ide egy hosszabb hsz-t, igaz a paraméter átadás nem volt része, keresővel sztem hamar megtalálod.
Egyébként könyvből tanulsz, netes cikkből, vagy megpróbálsz rájönni hogy mennek a dolgok? Az idők folyamán elég sok könyv, jegyzet, példatár lett itt linkelve érdemes őket megnézni.
szerk: és még lassú is vagyok.
[ Szerkesztve ]
-
shinodas
tag
válasz Jester01 #3320 üzenetére
Jester01: Tudom, hogy nem minden mássalhangzó, itt most csak ez a pointeres dolog lett volna a lényeg. Egyébként a hibaüzenetek alapján próbálok elindulni, csak annyira kezdő vagyok, hogy valamikor nem mond semmit nekem.
(*magan_p)++; ezt nem is tudtam pl, köszönömkingabo: A voidot kipróbálom, ezt sem gondoltam volna. Egyébként szerintem ez a probléma, hogy csak úgy magamtól, netről próbálom tanulni, nincs egy könyvem, ami alapján haladhatnék. :S
Köszönöm a válaszokat /tippeket! Este beszámolok, mire jutottam
-
shinodas
tag
A voidos és a (*pointer)++ kombináció megoldotta a probllémát! Nagyon szépen köszönöm! Arról tudnátok néhány mondatot mondani, hogy, ha void van, akkor mi történik?
-
-
Ricqy
tag
Sziasztok!
Csináltam egy Gondoltam egy számra játékot C-ben: [link], minden alap dolog benne van (írás, beolvasás, randomizálás, számolás, átalakítás...).Dealloc makes the ARC-angels cry.
-
MODERÁTOR
válasz WonderCSabo #3333 üzenetére
ez azt hiszem akkor PHP -ban helyt állna! (abban gondolkoztam, sorry!)
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
-
raven12
senior tag
#include <iostream>
int main()
{
unsigned short int number;
std::cout << "Adjon meg egy számot 1 és 5 között: ";
std::cin >> number;
std::cout << "\nKöszönöm, feldolgozás...";
switch (number)
{
case 0:
std::cout << "Ez túl kicsi te marha!";
brake;
case 1:
std::cout << "Jóvan!";
brake;
case 2:
for ( ; number < 5; number++)
{
std::cout << "Pörgök!";
}
brake;
case 3:
std::cout << "Ez 3!";
brake;
case 4:
std::cout << "Ez 4!";
brake;
case 5:
std::cout << "Ez az 5!";
brake;
default:
std::cout << "Ez túl nagy hapsikám!";
brake;
}
std::cout << "Na jóvan azé má kiírok valamit";
return 0;
}Azt kapom hibaüzenetként, hogy a brake-k nincsenek deklarálva. "not declared in this scope"
Ha kiveszem az össze brake-t, akkor lefut a program. Mi lehet a hiba? Könyv szerint így kell... -
shinodas
tag
Sziasztok!
Adott két tömb, amelyeket szeretnék összehasonlítani. Megszeretném számolni a két tömbben hány elem értéke egyezik meg. Ez megy is, örülök is neki, de szeretném pointerekkel ugyanezt. Ugye az elmélet az az, hogy veszi az egyik tömb 0. elemét, majd végig pörgeti a másik tömbbön, van e egyezés. Ha van, akkor növel egy számlálót, és az első tömb következő eleméhez lép. Persze ilyenkor a másik tömb 0. eleménél folytatná a következő körben. Na ez az ami nem megy, pointerekkel, hogyan mondom meg a pointernek, hogy "te most nullázad le magad!"?
-
shinodas
tag
válasz Jester01 #3339 üzenetére
Én arra lennék kíváncsi, hogy pl van egy *p pointerem, és egy tomb[10] tömböm. Beállítom, hogy p=tomb, megkapja a kezdőcímét a tömbnek, a pointer, ha jól tudom. De nem tudom, hogy konkrétan, hogyan néz ki az a kifejezés, aminél a pointert a kezdő címére állítom vissza. Egy saját függvényben, ahol csak a pointert "látom", a tömbböt nem, ott nem tudom.
Mit javasolnál ehelyett az algoritmus helyett?
[ Szerkesztve ]
-
Jester01
veterán
-
shinodas
tag
Köszönöm a válaszokat!
-
Ricqy
tag
Sziasztok!
Van valakinek ötlete, hogy ebben a programban mi okozhatja az Error creating Device hibát?
(nem én írtam, csak használni szeretném)
Köszi!Dealloc makes the ARC-angels cry.
-
Karma
félisten
A rendszerlogban nem látszik valami más hiba? Egy kiírás látszik az uinput forrásából.
De tényleg az lenne a jobb, ha egy strace-t is feltáncolnál a PDA-ra, és azzal futtatnád.
[ Szerkesztve ]
“All nothings are not equal.”
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Prémium alkatrészek! RoG 3070 Ti Z590 11600K 1000 Watt Platinum Vízhűtés 32GB RAM 1TB NVME Garancia!
- 4db SK hynix PE8110 M.2 1.92TB 22110 + HYPER M.2 X16 CARD V2
- Apple iPhone 13 Pro 256GB, Kártyafüggetlen, 1 Év Garanciával
- Eladó bontatlan JBL go 3 hangszóró
- ThinkPad P1 Gen 4 27% 16" 4K UHD érintő i7-11850H T1200 32GB 1TB NVMe ujjlolv IR kam gar
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs