ďťż

Ładny brzuch

Cześć jestem na 1 roku matmy na uniwerku w Gdańsku wiedziałam że będą elementy programowania ale oni nam dają zadania takie same jak dla studentów informatyki.
Z turbopascalem sobie poradziłam ale to mnie przerosło pomóżcie :excl:

oto 2 zadanka :

Zadanie 1. Napisać program morse kodujący podany na wejściu tekst na kod Morsa i~dekodujący podany na wejściu kod Morsa na tekst. Program powinien dać się uruchomić tak jak pokazano to poniżej (k – koduj, d – dekoduj):

echo SOS | morse k
... --- ...
echo ... --- ... | morse d
SOS

Kody Morsa możesz znaleźć na przykład w Wikipedii, a jak przekazać do uruchamianego programu argumenty wywołania jest opisane w K&R, 5.10.

Zadanie 2. Napisać program mogr wypisujący wszystkie wyrazy ze słownika Doroszewskiego występujące w napisie podanym na wejściu. Listę wyrazów znajdziesz tutaj: /usr/local/share/dict/doroszewski.words.
Oto przykładowe wywołanie tego programu:

cat /usr/local/share/dict/doroszewski.words | ./dor olaboga | sort
abo
ba
bo
la
log
...

ps:programujemy w linuksie



W sumie fajne, zajrzyj za jakiś czas. Co do słownika to rozumiem, że jest to lista słów oddzielonych enterami, tak?

Edycja:
Ok, oto kod dla programu z alfabetem morse'a:
#include <stdlib.h> #include <stdio.h> #include <ctype.h> struct morsetab {  char znak;  char *kod; }; const struct morsetab mtab[] = { /* litery */ {'a', ".-"}, {'b', "-..."}, {'c', "-.-."}, {'d', "-.."}, {'e', "."}, {'f', "..-."}, {'g', "--."}, {'h', "...."}, {'i', ".."}, {'j', ".---"}, {'k', "-.-"}, {'l', ".-.."}, {'m', "--"}, {'n', "-."}, {'o', "---"}, {'p', ".--."}, {'q', "--.-"}, {'r', ".-."}, {'s', "..."}, {'t', "-"}, {'u', "..-"}, {'v', "...-"}, {'w', ".--"}, {'x', "-..-"}, {'y', "-.--"}, {'z', "--.."}, /* cyfry */ {'0', "-----"}, {'1', ".----"}, {'2', "..---"}, {'3', "...--"}, {'4', "....-"}, {'5', "....."}, {'6', "-...."}, {'7', "--..."}, {'8', "---.."}, {'9', "----."}, {0, ""} }; char dekoduj(char *tekst) {  int i;  for (i=0;mtab[i].znak;i++)  {    if (!strcmp(mtab[i].kod, tekst))      return mtab[i].znak;  }  return 0; } int main(int argc, char **argv) {  if (argc < 2)  {    fprintf(stderr, "Skladnia: %s k|d\n", argv[0]);    return 0;  }  char znak;  if (!strcmp(argv[1], "k"))  {    while ((znak = getchar()) != EOF)    {      znak = tolower(znak);      if (znak >= 'a' && znak <= 'z')        printf("%s ", mtab[znak-'a'].kod);      else if (znak >= '0' && znak <= '9')        printf("%s ", mtab[znak-'0'+26].kod);      else        continue;    }  }  else if (!strcmp(argv[1], "d"))  {    char tekst[6] = {};    while (fscanf(stdin, "%s ", &tekst) != EOF)    {      znak = dekoduj(tekst);      if (znak == 0)      {        fprintf(stderr, "Nieprawidlowy kod: %s\n", tekst);        return 0;      }      printf("%c", znak);    }  }  printf("\n");  return 0; }
Nie jest tak uniwersalny i dopracowany jak mógłby być, ale raczej wystarczy.
Ewentualnie możesz dodać wychodzenie z programu, gdy podany zostanie nieodpowiedni znak do zakodowania zamiast tak jak teraz ignorowania go. W sumie tak by może nawet logiczniej było, skoro w dekodowaniu tak napisałem. Ale to już zostawię Ci do samodzielnej zabawy. ;)
Jeśli chcesz zobaczyć jak taki program by wyglądał, gdyby był porządniej napisany to możesz poszukać źródeł morse.c, która to "gra" instaluje się razem z FreeBSD. Możliwe, że z Linuksami też. Zresztą stamtąd wziąłem tablicę kodów.

Co do słownika to może już nie teraz go będę pisał.
Użytkownik Chmurek edytował ten post 25 kwiecień 2006, 00:30
Chmurek jestes kochany jak będzieasz miał jakieś cyferki do zsumowania daj znać :)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •