Dekoder Morsea

0

Witam. Mam do napisania projekt dekodera alfabetu Morse'a. Zrobiłem to tak, że w jednej tablicy jest słownik i na 8 miejscu jest rozkodowana litera (jedna litera jeden wiersz) a do drugiej tablicy wczytuję ciąg znaków (liter zakodowanych w alfabecie Morse'a). Każda zakodowana litera oddzielona jest spacją. Wczytywanie działa jak należy, lecz program nie chce porównywać dwóch tablic. Jeżeli znajdzie taki ciąg jaki jest podany, to sprawdza jaka jest litera na 8 miejscu w tym wierszu w slowniku i zapisuje ją do tablicy WYNIK. Czy mógłby mi ktoś pomóc w rozwiązaniu problemu dlaczego program się zawiesza w czasie wykonywania po podaniu ciągu? Jak poprawnie napisać porównywanie tych tablic? Z góry Dziękuję.

#include <stdio.h>
#include <stdlib.h> 
#include <string.h> 
main()
{
      int i,a=0,b=0,s=0,len;
      char c,decyzja,kod[100],wynik[50];
      char t_slownik[38][9]={
           {".-     A"}, {"-...   B"}, {"-.-.   C"}, {"-..    D"}, {".      E"}, {"..-.   F"},
           {"..-.   F"}, {"--.    G"}, {"....   H"}, {"..     I"}, {".---   J"}, {"-.-    K"},
           {".-..   L"}, {"--     M"}, {"-.     N"}, {"---    O"}, {".--.   P"}, {"--.-   Q"},
           {".-.    R"}, {"...    S"}, {"-      T"}, {"..-    U"}, {"...-   V"}, {".--    W"},
           {"-..-   X"}, {"-.--   Y"}, {"--..   Z"}, {".-.-.- ."}, {".----  1"}, {"..---  2"},
           {"...--  3"}, {"....-  4"}, {".....  5"}, {"-....  6"}, {"--...  7"}, {"---..  8"},
           {"----.  9"}, {"-----  0"}
           };
      printf("DEKODER KODU MORSE\'A\n");
      sleep(500);
      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;
      while ((c=getchar())!='\n')
      {
         kod[i] = c;
         i++;
      }
      kod[i]='\0';
      len=strlen(kod);
      i=0;
      while (i!=len)
      {
            if (kod[i]==' ')
            {
            s++;
            i++;
            }
            else if (kod[i]==t_slownik[a][b])
            {
                 i++;
                 b++;
            }
                 else 
                 {
                      a++;
                      i=s;
                      if (t_slownik[a][b]==' ')
                      wynik[s]=t_slownik[a][8];
                 }
      }
      len=strlen(wynik);                   
      for (i=0;i<len;i++)                  
      printf("%c",wynik[i]);
      system("pause");
}      
0

Każdy string jest kończony nullem... kurde jutro to przśledze, oczy mi sie już zamykają. Ale fajny pomysł na program :]

0

Dzięki, że chociaż prześledziś. Tylko jest mały problem. Musze ten program oddać na jutro, więc rozwiązanie przydałoby się do godz. 12 w miare możliwości.

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