Witam, jestem początkującym programistą. Na zajęcia mam przygotować program, który będzie mnożył liczby rzymskie. Domyślam się że trzeba go "złożyć" z trzech funkcji: Zmiana rzymskiej na arabską, mnożenie i zmiana arabskiej na rzymską. O ile z dwiema ostatnimi funkcjami nie mam problemu, to ze zmianą liczby rzymskiej na arabską wychodzi mi do pewnego momentu. Dokładniej do czwartego miejsca w tablicy t[4] wychodzi mi puste pole i nie wiem dlaczego. Program do czterech znaków działa poprawnie, a gdy znaków jest więcej nie uwzględnia ich. Czy moglibyście mi powiedzieć, gdzie leży problem ?
#include <stdio.h>
#include <stdlib.h>
char t[];
int i,w,b,p;/*b-biezaca, p-poprzednia,w-wynik*/
int main()
{ scanf("%s",t);
i=0;
w=0;
while((t[i])!='\0') /*zliczanie znaków w tablicy*/
i+=1;
printf("%d\n",i);
while (i>=0) /* branie każdej litery od prawej i zamiana jej na składnik sumy*/
{
if(t[i]=='\0')
p=1;
else if(t[i]=='i')
b=1;
else if(t[i]=='v')
b=5;
else if(t[i]=='x')
b=10;
else if(t[i]=='l')
b=50;
else if(t[i]=='c')
b=100;
else if(t[i]=='d')
b=500;
else if(t[i]=='m')
b=1000;
else
printf("Nieprawidlowy znak");
if(b>=p)
w=w+b;
else
w=w-b;
p=b;
i-=1;
}
printf("%d\n",w);
return 0;
}