Új hozzászólás Aktív témák

  • mm00
    aktív tag

    nah, erre meg ezt írta vissza.

    Kedves Kollegina!

    Nagyon köszönöm a részletes leírást a perror függvényről. Csak zárójelben jegyzem meg, hogy az atoi() függvény sohasem ad hibát, de ez semmit nem von le a perror-ról szóló leírásából.
    Az elküldött program azonban még mindig nem KR C-ben van. A feladatok kiírásában feltételként szerepel, hogy sem ANSI C, sem C++ kódot nem fogadok el. A KR C-ben a függvények deklarálásakor csak az értékkészlet deklarációja szerepel. Hogy hány változós a függvény és hogy milyen típusúak az egyes változók, az nem.
    Az
    int main(int argc, char*argv[])
    {
    ...
    }
    függvény definíció például ANSI C, de a C++ ugyanezt a szintaxist használja.
    Az
    int egesze(s)
    char *s;
    {
    ...
    }
    alakú függvény definíció pedig KR C kód. Ezek a fogalmak a gyakorlatokon szerepeltek. Kérem, kűldje el programja KR C változatát, amelyben javítsa ki azokat a program ágakat, ahol hibát detektál, és hibaüzenetet ad. Feltételezem, hogy szándéka szerint a hibaüzenet kiírása után nem akarja, hogy a program tovább fusson.

    Szóval mostmár totál kivagyok miatta, kértem hogy írja meg ez így mennyit ér, de arra persze nem válaszolt.
    nem tudom miért van belesve annyira a KR C-be, majdnem ugyanaz

    Talán ez:

    #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