Poprzedni temat został zamknięty przez moderatora a problem nie został rozwiązany :/ Napisałem program od początku troche inaczej i zaczął działać. Tzn jeżeli podają zakodowane litery co raz "większe" np A później F itd to program prawidłowo rozkodowuje. Jeżeli natomiast np po literze O podam kod litery A to zamist wypisać OA program wypisuje OW. Gdzie może być problem? Dziękuję.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
int i,j,a=0,b=0,s=0,len,l=0,t=0,cmp=1,l2=0,cz=0;
char c,kod[100];
char tmp[7]={" "};
char tmp2[7],wynik[50];
char slownik[37][6]={
{".-"}, {"-..."}, {"-.-."}, {"-.."}, {"."},
{"..-."}, {"--."}, {"...."}, {".."}, {".---"}, {"-.-"},
{".-.."}, {"--"}, {"-."}, {"---"}, {".--."}, {"--.-"},
{".-."}, {"..."}, {"-"}, {"..-"}, {"...-"}, {".--"},
{"-..-"}, {"-.--"}, {"--.."}, {".-.-.-"}, {".----"}, {"..---"},
{"...--"}, {"....-"}, {"....."}, {"-...."}, {"--..."}, {"---.."},
{"----."}, {"-----"}
};
char slownik2[38]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ.1234567890"};
printf("DEKODER KODU MORSE\'A\n");
printf("Program sluzy do dekodowania sygnalu Morse\'a.\n");
printf("Nalezy podac ciag znakow oddzielajac kazda zakodowana litere poprzez spacje.\n");
printf("Podaj zakodowany ciag znakow:\n");
i=0;
//Wczytywanie ciagu znakow
while ((c=getchar())!='\n')
{
kod[i] = c;
i++;
}
kod[i]=' '; //dodawanie spacji po wczytaniu calego ciagu
i++;
kod[i]=0; //dodawanie zera na koncu ciagu
//koniec wczytywania ciagu znakow
len=strlen(kod);
//liczenie ilosci spacji
while (l!=len)
{
if (kod[l]==' ')
{
s++;
l++;
}
else
l++;
}
l=0;
//koniec liczenia ilosci spacji
while (l!=s)
{
cmp=strcmp(tmp, tmp2);
if (cmp!=0)
{
//wczytywanie zakodowanej litery do tablicy tmp
if (l2==b)
{
i=0;
l2++;
while (kod[t]!=' ')
{
tmp[i]=kod[t];
i++;
t++;
}
i++;
t++;
tmp[t]=0; //zakonczenie ciagu
//koniec wczytywania zakodowanej litery do talbicy tmp
}
{
i=0;
j=0;
//wczytywanie kodu litery do tablicy tmp2
{
do{
if (slownik[a][j]==0)
{
j=0;
*tmp2=0;
}
else
{
tmp2[i]=slownik[a][j];
j++;
i++;
}
}while (slownik[a][j]!=0);
tmp2[i]=0;
a++;
}
cmp=strcmp(tmp, tmp2);
}
}
else
{
--a;
wynik[b]=slownik2[a];
b++;
l++;
tmp[1]=0;
wynik[b]=0;
*tmp2=0;
}
}
wynik[s]=0;
//koniec wczytywania zakodowanej litery do tablicy tmp
printf("%s\n",wynik);
system("pause");
}