Új hozzászólás Aktív témák
-
Iolé
csendes tag
Sziasztok!
Szeretném a segítségeteket kérni! Lenne egy program, amit nem egészen értek, főleg utolsó rész nem tiszta. Esetleg valaki tudna egy kis kommentet írni hozzá, hogy hogyan működik, meg mikor mit csinál, nagyon fontos lenne!
Ez volta feladat: A parancs a parancs sorban egy decimális számot (vagy decimális számokszóközökkel elválasztott sorozatát) vár(ja), amely(ek)nek kiírja római
szám megfelelőjét az stdout-ra.
Hibásan megadott parancs esetén a programnak rövid diagnosztikai
üzenetben informálnia kell a felhasználót arról, hogy a parancsot
hogyan kell használni. A diagnosztikai üzenetet az stderr-re kell
küldeni.
És a program:
#include <stdio.h>int main(argc, argv)
int argc;
char *argv[];
{
int i = 0, x=0;
int dec;
char rom[50];
if(argc == 1){
fprintf(stderr, "Hianyzik a parameter!");
exit( 1 );
}for(x=1;x<argc;x++){
if(egesze(argv[x])){
dec = atoi(argv[x]);
}else{
fprintf(stderr, "A parameterlistaban nem megfelelo az egyik ertek!");
exit( 1 );
}while(dec>=1000){
dec -= 1000;
rom[i] = 'M';
i++;
}
if (dec>=900){
dec-=900;
rom[i] = 'C';
i++;
rom[i] = 'M';
i++;
}
if(dec>=500){
dec -= 500;
rom[i] = 'D';
i++;
}
if (dec>=400){
dec -= 400;
rom[i] = 'C';
i++;
rom[i] = 'D';
i++;
}
while(dec>=100){
dec = dec-100;
rom[i] = 'C';
i++;
}
if(dec>=90){
dec -= 90;
rom[i] = 'X';
i++;
rom[i] = 'C';
i++;
}
if(dec>=50){
dec -= 50;
rom[i] = 'L';
i++;
}
if(dec>=40){
dec -= 40;
rom[i] = 'X';
i++;
rom[i] = 'L';
i++;
}
while(dec>=10){
dec -= 10;
rom[i] ='X';
i++;
}
if(dec == 9){
rom[i] = 'I';
i++;
rom[i] = 'X';
i++;
}
else{
if(dec >= 5){
dec -= 5;
rom[i] = 'V';
i++;
}
if(dec == 4){
rom[i] = 'I';
i++;
rom[i] = 'V';
i++;
}
else{
while(dec > 0){
dec -= 1;
rom[i] = 'I';
i++;
}
}
}
rom[i]='\0';
printf(" %s", rom);
}
exit(0);
}int egesze(s)
char *s[];
{
int i=0, kezd;
while (s[i]==' ' || s[i]=='\n' || s[i]=='\t')++i;
if(s[i]=='+' || s[i]=='-')++i;
kezd=i;
while(s[i]>='0' && s[i]<='9')++i;
if(i==kezd || s[i]!=' ' && s[i]!='\t' && s[i]!='\n' && s [i]!=0) return 0;
else return 1;
}int atoi(s)
char s[];
{
int i, n;
n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
return n;
}
Ú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!
- Huawei Watch GT 6 és GT 6 Pro duplateszt
- Kínai és egyéb olcsó órák topikja
- Arc Raiders
- Forza sorozat (Horizon/Motorsport)
- Xbox tulajok OFF topicja
- Multimédiás / PC-s hangfalszettek (2.0, 2.1, 5.1)
- Chuch Norris teret váltott!
- sziku69: Szólánc.
- Battlefield 6
- sziku69: Fűzzük össze a szavakat :)
- További aktív témák...
- GAMER PC // ASUS TUF B650M-PLUS / R9 7900X / 64GB DDR5 / SAPPHIRE Radeon RX 7800 XT / 1TB M.2 SSD
- Intel Core i7-13700KF + ASUS Prime Z790-P WIFI + Kingston FURY Beast 32GB DDR5 6000MHz
- OH! Dell Latitude 7340 Üzleti Profi Fémházas Ultrabook Laptop 13,3" -65% i7-1365U 16/512 FHD IRIS Xe
- Azta Dell Latitude 7440 -65% Üzleti Profi Fémházas Érintős Ultrabook Laptop 14" i7-1365U 32/512 FHD+
- DJI Osmo Action 4 Adventure Combo + sok tartozékkal búvárkodáshoz
- Asus ROG Strix G16 Notebook! i9-14900HX / RTX 4060 / 16GB DDR5 / 1TB NVMe! BeszámítOK
- Amazon Kindle 10th Generation ébresztős tok
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- HP EliteOne 800 G4 All-in-One i5-8500 16GB 512GB 23.8" Érintőkijelző!! 1 év garancia
- HIBÁTLAN iPhone 14 Pro 128GB Space Black-1 ÉV GARANCIA - Kártyafüggetlen, MS4420, 100% Akksi
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
