[C] Anagramy z ciągu wyrazów

neta20
Użytkownik
Użytkownik
Posty: 27
Rejestracja: 26 sty 2014, o 11:50
Płeć: Kobieta
Lokalizacja: Przeworsk/Kraków
Podziękował: 5 razy

[C] Anagramy z ciągu wyrazów

Post autor: neta20 »

Witam mam do napisania program ktory napisze i wyswietli wszystkie anagramy ktore musze znalezc z danego ciagu wyrazów. Nie rozumiem tego za bardzo ale po wskazówkach wykładowcy zrobiłam tyle ile tutaj widac ale on nie pokazuje anagramów tylko zblizone wyrazy do siebie ...:/ nie wiem co robie zle

Kod: Zaznacz cały

#include <stdio.h>
#include <conio.h>
#include <math.h> 
#include <string.h> 

int liczbawystapien (char litera, char slowo[21])
{
  int n,licznik;
  licznik=0;
  n=strlen(slowo);
  for( int i=0;i<n;i++)
  {
    if(litera==slowo[i])
    licznik++;
}return licznik;    
}    
    
 int anagramy (char slowo[21], char slowo1[21])
 {
     
 if ( strlen(slowo)==strlen(slowo1))
 {
      for(int i=0;i<strlen(slowo);i++)
      if(slowo[i]==slowo1[i+1])
      return 1;
}  return 0;
}
main()
{
      char slowo[21];
      char slowo1[21];
      
      FILE *plik1,*plik2;
      plik1=fopen("slownik.txt","r");     // w slowniku jest podany ciag tych wyrazów 
      plik2=fopen("anagramy.txt","w");
      while (feof(plik1)==0)
      {
            fscanf(plik1,"%s",slowo);
            if (anagramy(slowo,slowo1)==1)
            fprintf(plik2,"%s	%s
",slowo,slowo1);
      }
      fclose(plik1);
      fclose(plik2);
      
 printf("skonczylem");     
getch();
}
wydaje mi sie ze powinnam jeszcze cos w main dodac o tej funkcji liczba wystapien ale nie mam pojecia jak to zamiescic zeby dzialalo .....to co mi otwiera to :np

Kod: Zaznacz cały

AFGAŃCZYK	 AFIRMACJA
AKTYWATOR	AKTYWISTA
AMALTEJA	AMARETTO
ANGINA	ANGLIA
AŻUR	BABA
BABINICZ	BABINIEC
BALEARY	BALEJAŻ
BANKNOTY	BANKOMAT
BAWIALNIA	BAWIDAMEK
BETONIARNIA	BETONOWANIE
BEZBRONNOŚĆ	BEZCELOWOŚĆ
BIELINEK	BIELIZNA
BIOTERAPEUTA	BIOTERRORYZM
BŁĄDZENIE	BŁĄKANINA
BOCZNIAK	BOCZNICA
mogłby mi tu ktos pomoc albo wytłumaczyc to
Ostatnio zmieniony 23 maja 2014, o 19:33 przez Afish, łącznie zmieniany 1 raz.
Powód: Stosuj tagi code. Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
gryxon
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 30 gru 2011, o 02:21
Płeć: Mężczyzna
Lokalizacja: Puławy
Podziękował: 11 razy
Pomógł: 53 razy

[C] Anagramy z ciągu wyrazów

Post autor: gryxon »

Kod: Zaznacz cały

int anagramy (char slowo[21], char slowo1[21])
 {
     
 if ( strlen(slowo)==strlen(slowo1))
 {
      for(int i=0;i<strlen(slowo);i++)
      if(slowo[i]==slowo1[i+1])
      return 1;
}  return 0;
}
Co niby ma robić ta funkcja? Jest ona na bank źle napisana.
Jeżeli chcesz sprawdzić czy dane dwa słowa są anagramami to zrób dla dwóch wyrazów dwie tabele, które liczą wystąpienia poszczególnych liter. Jeżeli wystąpienia każdej litery są takie same to wyrazy są anagramami.
ODPOWIEDZ