program do konwersji liczb rzymskich na arabskie

0

mam problem ze wskaźnikiem ptr przy kompilowaniu nie przekazuje z main odpowiednich charów np. "Ń" zamiast X

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define Max 20


struct RZYM {
int arabska;
char *rzym;
}
 rz[]={{1,"I"},{4,"IV"},{5,"V"},{9,"IX"},{10,"X"},
{40,"XL"},{50,"L"},{90,"XC"},{100,"C"},
{400,"CD"},{500,"D"},{900,"CM"},{1000,"M"}};

struct RZYM *ptr_rzym,x;
struct RZYM rzym;


int convert_romanian_to_arabic(char* ptr, int length)
{
    int result = 0;
    char x;
    char romanian[length];
    ptr = romanian;

    if(length == 0)return 0;
    else{

    for(int i = 0; i < length;i++){

                x = ptr[i];

                for(int n = 0; n < 13; n++){
                if((strcmp(rz[n].rzym,x))== 0){

                result = result + rz[n].arabska;

                }

                }
        }
}
return 0;
}
int main()
{


    int length;
    printf("podaj ilosc znakow liczby rzymskiej, ktora chcesz wpisac (w nastepnym kroku podaj ta liczbe): ");
    scanf("%d",&length);
    char romanian[length];
    char *ptr_romanian;
    ptr_romanian = romanian;
    printf("podaj liczbe rzymska wpisujac pojedyncze cyfry i naciskajac enter: ");

    for(int i = 0; i < length ; i++){
    scanf("\n%s",&romanian[i]);
    }

    for(int k = 0; k < length; k++){
    printf("%c ",romanian[k]);
    }
    convert_romanian_to_arabic(*ptr_romanian,length);

    return 0;
}

```C
0

problem jest tu:
if((strcmp(rz[n].rzym,x))== 0){
próbujesz porównać napisy podając pojedynczy znak jako drugi parametr.

Też przy deklaracji warto zaznaczyć że to stała:
const char *rzym;

Poza tym powinieneś dać tylko pojedyncze znaki w tej tablice, czyli:
struct { int arabska; char rzym; } rz[]={{1,'I'},{5,'V'},{10,'X'},{50,'L'},{100,'C'},{500,'D'},{1000,'M'},};

Wczytywanie uprość do:
char romanian[8]; scanf("%7s",romanian);

1 użytkowników online, w tym zalogowanych: 0, gości: 1