Hirdetés
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- Mini-ITX
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- NVIDIA GeForce RTX 4060 / 4070 S/Ti/TiS (AD104/103)
- Melyik tápegységet vegyem?
- Megjött a Logitech G PRO X Superlight 2 "ergonomikus" változata
- OLED TV topic
- Meghozta a 9. generációs V-NAND dizájn QLC-s verzióját a Samsung
- Steam Deck
- Samsung LCD és LED TV-k
Hirdetés
-
Barcelonából indul nemzetközi útra a Huawei MatePad 12.2 (2024)
ma Illetve a MatePad Air 2024, amit errefelé MatePad 12 X-nek hívnak.
-
Filmekből és sorozatokból tréningezik az AI-modellt
it A Runway megállapodott a Lionsgate-tel, így utóbbi hozzáférést ad a startupnak a hatalmas filmes és tévés adatbázishoz.
-
Mozgásban az Arsene Lupin: Once a Thief
gp A PC-re és konzolokra érkező játék jövő hónap közepén debütál.
Új hozzászólás Aktív témák
-
Lortech
addikt
Kiemeled hogy void függvény, pedig a void mint típus, ill. típus "hiánya" éppen procedúrát jelent, nem függvényt, nincs visszatérési értéke, ezért a "felszin=A..."
értékadó kifejezés nyilvánvalóan hibás. A függvénynek egy megfelelő (2*PI*r*(r+h) -vel kompatibilis) adattípust kell megadnod visszatérési érték típusának void helyett.
(szerk: és persze vissza is kell térned a függvényből a visszatérési értékkel a return kulcsszóval)[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lortech
addikt
Szerintem érdemes két külön függvényt írni a két számításra, ezzel elkerülve a problémát.
A return valóban egy értéket ad vissza, de ez az érték lehet akár egy memória cím is, ami egy tömbre, listára, struktúrára stb. mutat, ami bármennyi értéket takarhat.
Voiddal is megoldható - ha konkrétan ez volt a feladat -, de akkor átmenő paramétert vagy globális változót kell alkalmaznod (ezt csak a lehetőség miatt említettem, ne így csináld). Ez pl. úgy néz ki, hogy egy mutatót adsz át paraméterként, és az általa mutatott értéket megváltoztatod a kivánt értékre az eljárás végrehajtása során, majd az értéket felhasználod.pl.
"r változó mint mutató deklarálása, inicializálása";
függvényhívás(r (címe),...,...);
eredmeny = r (értéke);Kódot szándékosan nem írok, mert ebben a stádiumban szerintem jobb, ha te magad fedezed fel ezeket a fogalmakat.
[ Szerkesztve ]
Thank you to god for making me an atheist
-
jattila40
tag
A fügvénynek csak egy visszatérő értéke lehet, és az sem akármilyen típusú. Ha felszín és térfogat is kell, akkor írhatsz egy void fv.-t (eljárást), aminek 4 paramétere lesz, valahogy így:
#include <stdio.h>
#define PI 3.141592654void felszin_terfogat(float sugar, float magassag,float *felszin, float *terfogat)
{
if(felszin==NULL || terfogat==NULL)return;
*felszin=2*sugar*PI*(sugar+magassag);
*terfogat=sugar*sugar*PI*magassag;
}void main(int argc, char*argv[])
{
float sugar,magassag,felszin,terfogat;if(argc<3){
printf( "henger felszinet es terfogatat szamolja ki a program\r\n\
parancssori argumentumokkal is hivhato: <programnev> <sugar> <magassag>\r\n");
printf("sugar: ");
scanf("%f",&sugar);
printf("magassag: ");
scanf("%f",&magassag);
}
else{
sugar=atof(argv[1]);
magassag=atof(argv[2]);
}felszin_terfogat(sugar,magassag,&felszin,&magassag);
printf("felszin: %10.5f\r\n",felszin);
printf("terfogat: %10.5f\r\n",terfogat);
}[ Szerkesztve ]
-
cucka
addikt
El kéne olvasni, hogy az strcmp hogy működik:
int strcmp(const char *s1, const char *s2);
Tehát két darab char* típusú változót kér paraméternek, a te programodban pedig két char típusú változóval próbálod meghívni.
Char típusú változókat pont úgy tudod összehasonlítani, mint ahogy sima int-eket hasonlítasz, tehát alapvetően ebben a programban semmi szükség az strcmp függvényre. A char típus egy darab karaktert jelent ugyan, de felfoghatod úgy is, mint egy előjel nélküli egész számot, mert tulajdonképpen az. -
Jester01
veterán
Mégpedig azért, mert a scanf egy borzasztó rossz függvény terminálról olvasáshoz.
Ha debuggerrel vagy egy kiíratást betéve megnézed mi lesz a gyalog változód valószínűleg egyből kiszúrod, hogy bizony a bástya bekérés után a pufferben maradt egy (vagy kettő) soremelés karakter és az kerül oda.Gyors megoldásként ha a második scanf formátumstring elejére teszel egy szóközt akkor már jó lesz. (Persze ahogy cucka kollega mondta, csak simán az értékeket hasonlítsd össze.)
Beolvasáshoz amúgy fgets és sscanf párosa ajánlott, megfelelő hibakezeléssel.
Jester
-
Jester01
veterán
Az fscanf szintaxisa 2 karakter beolvasására: fscanf(bemeneti fájl neve, "%c %c", &a, &b)
Nem a fájl neve kell oda, hanem a megnyitott fájl pointer. Karakter olvasáshoz az fgetc függvényt kell használni ami szintén a fájl pointert kapja és visszaadja a soron következő karaktert. A getchar() ekvivalens egy fgetc(stdin) hívással, vagyis az a standard inputról olvas ezért nem kell neki fájl.
Példa:
#include <stdio.h>
int main(int argc, char* argv[])
{
FILE* f = fopen(argv[1], "rb");
int ch;
while((ch = fgetc(f)) != EOF) putchar(ch);
fclose(f);
return 0;
}Jester
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- Környezetvédelem
- Eredeti játékok OFF topik
- Mini-ITX
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Autós topik
- Ingyen kellene, de tegnapra
- Óvodások homokozója
- NVIDIA GeForce RTX 4060 / 4070 S/Ti/TiS (AD104/103)
- Melyik tápegységet vegyem?
- További aktív témák...
- HP EliteBook x360 1030 G4 i5-8365U 16GB RAM 512GB SSD világító MAGYAR bill érintő képernyő LTE modul
- AKCIÓS áron Dobozos ÚJ Asus Tuf FX506LHB /I5-10300H/16GB/512 GB SSD/GTX1650 4GB/FHD/IPS/144Hz/Gari
- HP EliteBook 830 G8 i5-1135G7 16GB RAM 512GB SSD MAGYAR BILL
- Playstation 4 Pro Spider-Man edition CUH-7116B
- KIHAGYHATATLAN áron Dobozos új Hp Pavilion Gaming! /Ryzen 5-5600H 8GB 256SSD GTX 1650 Garancia/
Állásajánlatok
Cég: Ozeki Kft
Város: Debrecen
Cég: Ozeki Kft
Város: Debrecen