Ú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!
- Mobilinternet
- Hegesztés topic
- Politika
- USB to S/PDif konverter a modern RIAA, elektroncsövekkel
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Sorozatok
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- ASUS ROG PG32UCDM: OLED csúcsmonitor tesztje
- Háztartási gépek
- Azonnali VGA-s kérdések órája
- További aktív témák...
- -59% HP EliteBook x360 830 G7:i5 10310U,16GB,256GB,vil.MAGYAR bilI.,IR,13.3" Touch,100%sRGB,WWAN 4G
- Sony PS5 (1116A) + 2TB Samsung SSD bővítés a gyári 825GB mellett, két karral + venom töltőhub
- HP Laptop 15-fd051ne - ÚJ - 15,6" FullHD IPS notebook - Core i5-1335U, 8GB, 512SSD, Win11
- Brother DCP-L2532DW wifis, multifunkciós lézernyomtató
- HP Pavilion x360 14-ek Convertible - ÚJ - 14" TOUCH notebook - i5-1235U, 16GB, 512SSD, Win11
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Ozeki Kft.
Város: Debrecen