Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int zahl (int z);
  5. int array_Laenge(char* anagramm_liste[]);
  6. char *anagramm (int argc, char *argv[]);
  7. char woerterbuch (const char wort[],const int i);
  8. void duplikatmalloc (const char str[],char satz [],const int z);
  9. void *malloc(size_t size);
  10. void leerzeichen_loeschen(char *str);
  11. void argumente (int argc, char *argv[] );
  12. void sortieren(int argc, char *argv[] , const char satz[],char mallocsatz []);
  13. void rechtschreibung(const char satz[], char mallocsatz [], int i);
  14. char anagram_find (int argc, char *argv[] , const char satz[],char mallocsatz [],char *anagramm_liste [],int i,int r);
  15. void ausgabe (int argc, char *argv[] , const char satz[],char mallocsatz [],char vergleichsatz [],char *anagramm_liste []);
  16. void loesung (char mallocsatz [],char vergleichsatz [],char *anagramm_liste [], int r);
  17. char* recursion_letter(char *anagramm_liste [],char vergleichsatz[], char mallocsatz[], int i);
  18. void smaller_list(char *anagramm_liste []);
  19. char* rekursionListe(char* anagramm_liste[], char vergleichsatz[],char mallocsatz[]);
  20. char loeschen(char vergleichsatz[],int j);                                                  // Sentence muss im Parameter ebenfalls als const deklariert werden , da ansonsten das Programm einen andere Vorm von Variable erwartet.
  21.  
  22.                                                     // Sentence muss im Parameter ebenfalls als const deklariert werden , da ansonsten das Programm einen andere Vorm von Variable erwartet.
  23.  
  24.  
  25.  
  26. int main( int argc, char *argv[] )
  27. {
  28.  
  29.         char *ausgabe = anagramm(argc,argv);
  30.         return 0;
  31. }
  32.  
  33. char *anagramm (int argc, char *argv[]) // ich will adresse char zurückhaben
  34. {
  35. char *anagramm_liste[argc+1];
  36. //char *anagramm_liste2[argc];
  37. int i = 0;
  38. int z = 0;
  39. int r = 0;
  40. int a = 0;
  41. const char *const satz = argv[1];
  42. int elemente = strlen(satz);
  43. char *mallocsatz = malloc(elemente * sizeof(char)+1);
  44. char *vergleichsatz = malloc(elemente * sizeof(char)+1);
  45. duplikatmalloc(satz,mallocsatz,z);
  46. duplikatmalloc(satz,vergleichsatz,z);
  47. rechtschreibung(satz,mallocsatz,i);
  48. rechtschreibung(satz,vergleichsatz,i);
  49. leerzeichen_loeschen(mallocsatz);
  50. leerzeichen_loeschen(vergleichsatz);
  51. for (i = 2; i < argc; i++){
  52.         r = anagram_find(argc,argv,satz,mallocsatz,anagramm_liste,i,r);
  53.         //anagramm_liste <- enthält alle anagramm wörter
  54. }
  55. printf("anagramm_liste lautet: %s\n", anagramm_liste[0]);
  56. argumente(r,anagramm_liste);
  57. //smaller_list(anagramm_liste);
  58. rekursionListe(anagramm_liste,vergleichsatz,mallocsatz);
  59. return 0;
  60. }
  61.  
  62.  
  63. char* rekursionListe(char* anagramm_liste[], char vergleichsatz[],char mallocsatz[])                                                     // Sentence muss im Parameter ebenfalls als const deklariert werden , da ansonsten das Programm einen andere Vorm von Variable erwartet.
  64. {
  65.         if(anagramm_liste[0] != '\0'){
  66.            for(int i = 0; i < array_Laenge(anagramm_liste); i++){
  67.             printf(" %s\n", anagramm_liste[0]);
  68.             recursion_letter(anagramm_liste,vergleichsatz,mallocsatz,i);
  69.             printf("verlgeichsatz nach funktion:  %s\n", vergleichsatz);
  70.             rekursionListe(&anagramm_liste[1],vergleichsatz,mallocsatz);} // übergibt die variablen in die nächste rekursion
  71.         }
  72.         else{
  73.                 }
  74.     return 0;
  75.  
  76. }
  77.  
  78. int array_Laenge(char* anagramm_liste[])
  79. {
  80. int i = 0;
  81.     for(i = 1; anagramm_liste[i] != '\0'; i++){
  82.  
  83.     }
  84.     return i;
  85. }
  86.  
  87.  
  88.  
  89. char* recursion_letter(char *anagramm_liste [],char vergleichsatz[], char mallocsatz[], int i)
  90. {
  91.     int t = 0;
  92.     int z = 0;
  93.     int j = 0;
  94.     duplikatmalloc(mallocsatz,vergleichsatz,z);
  95.         for (z = 0; z < strlen(anagramm_liste[i]); z++){ // buchstbaen
  96.        // printf("Der Buchstabe: %c\n",argv[i][z]);
  97.             for(j = 0; j < strlen(vergleichsatz); j++){
  98.             if (anagramm_liste[i][z] == vergleichsatz[j] || anagramm_liste[i][z] +32 == vergleichsatz[j]) {
  99.               for(; vergleichsatz[j] != '\0'; j++){ // die schleife löscht die buchstaben
  100.                 vergleichsatz[j] =  vergleichsatz[j+1];}
  101.             //printf("Die Buchstaben sind gleich und j ist:  %d\n", j);
  102.                 t = t+1;
  103.                 if(t == strlen(anagramm_liste[i])){
  104.                //printf("r lautet  :  %d\n", r);
  105.                     printf("Anagramm wurde gefunden bei :  %s\n", anagramm_liste[i]);
  106.                     printf("vergleichsatz vor funktion :  %s\n", vergleichsatz);
  107.                     return ;         }
  108.              }else{
  109.  
  110.                         //printf("Die Buchstaben sind ungleich und j ist: %d\n", j);
  111.                 }
  112.             }
  113.   }
  114.   return ;
  115. }
  116.  
  117.  
  118.  
  119. void smaller_list(char *anagramm_liste [])
  120. {
  121.     for(int i = 0;anagramm_liste[i] != 0; i++){
  122.         anagramm_liste[i]=anagramm_liste[i+1];
  123.     }
  124. }
  125.  
  126.  
  127. char anagram_find(int argc, char *argv[] , const char satz[],char mallocsatz [],char *anagramm_liste [],int i,int r)
  128. {
  129.     int t = 0;
  130.     int j = 0;
  131.         for (int z = 0; z < strlen(argv[i]); z++){ // buchstbaen
  132.        // printf("Der Buchstabe: %c\n",argv[i][z]);
  133.             for(j = 0; j < strlen(satz); j++){
  134.             if (argv[i][z] == mallocsatz[j] || argv[i][z] +32 == mallocsatz[j]) {
  135.             //printf("Die Buchstaben sind gleich und j ist:  %d\n", j);
  136.             t = t+1;
  137.             if(t == strlen(argv[i])){
  138.                //printf("r lautet  :  %d\n", r);
  139.                // printf("Anagramm wurde gefunden bei :  %s\n", argv[i]);
  140.                 anagramm_liste[r] = argv[i];// Anagramm übergeben an liste/ausgabe/array
  141.                 r = r+1;
  142.                // printf("Anagramm wurde ubergeben an :  %s\n", anagramm_liste[r]);
  143.                 }
  144.                 break;
  145.                 }else
  146.                 {
  147.                         //printf("Die Buchstaben sind ungleich und j ist: %d\n", j);
  148.  
  149.  
  150.                 }
  151.             }
  152.   }
  153.   anagramm_liste[r] = '\0';
  154.   return r;
  155. }
  156.  
  157. void leerzeichen_loeschen(char *satz)
  158. {
  159.     int zaehler = 0;
  160.     for (int i = 0; satz[i]; i++) // str [i]== 0 is dass dasselbe wie str [i] == /0
  161.         if (satz[i] != ' ')
  162.             satz[zaehler++] = satz[i];
  163.     satz[zaehler] = '\0';
  164. }
  165.  
  166.  
  167. void rechtschreibung(const char satz[], char mallocsatz [], int i)                                // Diese Funktion korrigiert die Größe des ersten Buchstabes wenn nötig und vergrößert den Buchstaben des zweiten Wortes.
  168. {
  169.     for (i = 0; satz[i] != '\0'; i++){
  170.     if (satz[i] < 90 && satz[i] != ' ')
  171.     {
  172.         mallocsatz[i] = mallocsatz[i]+ 32;
  173.     }else {
  174.         }
  175.     }
  176. }
  177.  
  178.  
  179. void duplikatmalloc(const char satz[],char mallocsatz [],const int z)
  180. {
  181.  
  182.     if (satz[z] == '\0')
  183.     {
  184.         mallocsatz [z] = '\0';
  185.     }
  186.     else
  187.     {
  188.      mallocsatz [z] = satz [z];
  189.      duplikatmalloc(satz,mallocsatz, z+1);
  190.     }
  191.  
  192. }
  193.  
  194. void argumente(int argc, char *argv[] )
  195. {
  196.         //int i = 0;
  197.         printf( "argc_Anzahl der Arguemente lautet: %d\n", argc );
  198.     //    printf( "argv_Das erste Elemente lautet:  %s\n", argv[0] );
  199.         if ( argc == 1 ) {
  200.                 printf( "No arguments were passed.\n" );
  201.         } else {
  202.                 printf( "Woerterbuch:\n" );
  203.  
  204.                 for ( int i = 0; i < argc; i++ ) {  // alternativ i++ statt i = i+1;
  205.                         printf( "  %d. %s\n", i, argv[i] );
  206.                 }
  207.         }
  208. }
  209.  
  210.  
  211. /* "Sxzytwqp Klj Yrtd"  Abc And Def Dxz k kx Ljsrt lt pt Ptyywq y Ywjsrq Zd zzx */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement