Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.19 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 [], int i) // Sentence muss im Parameter ebenfalls als const deklariert werden , da ansonsten das Programm einen andere Vorm von Variable erwartet.
  64. {
  65.  
  66. for(int i=1;anagramm_liste[i]!='\0';i++)
  67. {
  68. anagramm_liste2[i-1] = anagramm_liste[i];
  69. }
  70. return rekursionListe(anagramm_liste, anagramm_liste2,i);
  71. }*/
  72.  
  73.  
  74. 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.
  75. {
  76. if(anagramm_liste[0] != '\0'){
  77. for(int i = 0; i < array_Laenge(anagramm_liste); i++){
  78. printf(" %s\n", anagramm_liste[0]);
  79. recursion_letter(anagramm_liste,vergleichsatz,mallocsatz,i);
  80. printf("verlgeichsatz nach funktion: %s\n", vergleichsatz);
  81. rekursionListe(&anagramm_liste[1],vergleichsatz,mallocsatz);}
  82. }
  83. else{
  84. }
  85. return 0;
  86.  
  87. }
  88.  
  89. /* "Sxzytwqp Klj Yrtd" Abc And Def Dxz k kx Ljsrt lt pt Ptyywq y Ywjsrq Zd zzx */
  90. int array_Laenge(char* anagramm_liste[])
  91. {
  92. int i = 0;
  93. for(i = 1; anagramm_liste[i] != '\0'; i++){
  94.  
  95. }
  96. return i;
  97. }
  98.  
  99. /*
  100. for(int i = 0; anagramm_liste[i] != 'zzx' ; i++){
  101. printf("anagramm_liste lautet: %s\n", anagramm_liste[0]);
  102. //recursion_letter(anagramm_liste[0],i);
  103. return rekursionListe(&anagramm_liste[1],vergleichsatz);
  104. }
  105.  
  106. for int i ; i != '\0'
  107. */
  108.  
  109.  
  110. char* recursion_letter(char *anagramm_liste [],char vergleichsatz[], char mallocsatz[], int i)
  111. {
  112. int t = 0;
  113. int z = 0;
  114. int j = 0;
  115. duplikatmalloc(mallocsatz,vergleichsatz,z);
  116. for (z = 0; z < strlen(anagramm_liste[i]); z++){ // buchstbaen
  117. // printf("Der Buchstabe: %c\n",argv[i][z]);
  118. for(j = 0; j < strlen(vergleichsatz); j++){
  119. if (anagramm_liste[i][z] == vergleichsatz[j] || anagramm_liste[i][z] +32 == vergleichsatz[j]) {
  120. for(; vergleichsatz[j] != '\0'; j++){
  121. vergleichsatz[j] = vergleichsatz[j+1];}
  122. //printf("Die Buchstaben sind gleich und j ist: %d\n", j);
  123. t = t+1;
  124. if(t == strlen(anagramm_liste[i])){
  125. //printf("r lautet : %d\n", r);
  126. printf("Anagramm wurde gefunden bei : %s\n", anagramm_liste[i]);
  127. printf("vergleichsatz vor funktion : %s\n", vergleichsatz);
  128. return ; }
  129. }else{
  130.  
  131. //printf("Die Buchstaben sind ungleich und j ist: %d\n", j);
  132. }
  133. }
  134. }
  135. return ;
  136. }
  137. /*
  138. char loeschen(char vergleichsatz[],int j)
  139. {
  140. for(; vergleichsatz[j] != '\0'; j++)
  141. vergleichsatz[j] = vergleichsatz[j+1];
  142. return vergleichsatz;
  143. }*/
  144.  
  145.  
  146. void smaller_list(char *anagramm_liste [])
  147. {
  148. for(int i = 0;anagramm_liste[i] != 0; i++){
  149. anagramm_liste[i]=anagramm_liste[i+1];
  150. }
  151. }
  152.  
  153.  
  154. char anagram_find(int argc, char *argv[] , const char satz[],char mallocsatz [],char *anagramm_liste [],int i,int r)
  155. {
  156. int t = 0;
  157. int j = 0;
  158. for (int z = 0; z < strlen(argv[i]); z++){ // buchstbaen
  159. // printf("Der Buchstabe: %c\n",argv[i][z]);
  160. for(j = 0; j < strlen(satz); j++){
  161. if (argv[i][z] == mallocsatz[j] || argv[i][z] +32 == mallocsatz[j]) {
  162. //printf("Die Buchstaben sind gleich und j ist: %d\n", j);
  163. t = t+1;
  164. if(t == strlen(argv[i])){
  165. //printf("r lautet : %d\n", r);
  166. // printf("Anagramm wurde gefunden bei : %s\n", argv[i]);
  167. anagramm_liste[r] = argv[i];// Anagramm übergeben an liste/ausgabe/array
  168. r = r+1;
  169. // printf("Anagramm wurde ubergeben an : %s\n", anagramm_liste[r]);
  170. }
  171. break;
  172. }else
  173. {
  174. //printf("Die Buchstaben sind ungleich und j ist: %d\n", j);
  175.  
  176.  
  177. }
  178. }
  179. }
  180. anagramm_liste[r] = '\0';
  181. return r;
  182. }
  183.  
  184. void leerzeichen_loeschen(char *satz)
  185. {
  186. int zaehler = 0;
  187. for (int i = 0; satz[i]; i++) // str [i]== 0 is dass dasselbe wie str [i] == /0
  188. if (satz[i] != ' ')
  189. satz[zaehler++] = satz[i];
  190. satz[zaehler] = '\0';
  191. }
  192.  
  193.  
  194. 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.
  195. {
  196. for (i = 0; satz[i] != '\0'; i++){
  197. if (satz[i] < 90 && satz[i] != ' ')
  198. {
  199. mallocsatz[i] = mallocsatz[i]+ 32;
  200. }else {
  201. }
  202. }
  203. }
  204.  
  205.  
  206. void duplikatmalloc(const char satz[],char mallocsatz [],const int z)
  207. {
  208.  
  209. if (satz[z] == '\0')
  210. {
  211. mallocsatz [z] = '\0';
  212. }
  213. else
  214. {
  215. mallocsatz [z] = satz [z];
  216. duplikatmalloc(satz,mallocsatz, z+1);
  217. }
  218.  
  219. }
  220.  
  221. void argumente(int argc, char *argv[] )
  222. {
  223. //int i = 0;
  224. printf( "argc_Anzahl der Arguemente lautet: %d\n", argc );
  225. // printf( "argv_Das erste Elemente lautet: %s\n", argv[0] );
  226. if ( argc == 1 ) {
  227. printf( "No arguments were passed.\n" );
  228. } else {
  229. printf( "Woerterbuch:\n" );
  230.  
  231. for ( int i = 0; i < argc; i++ ) { // alternativ i++ statt i = i+1;
  232. printf( " %d. %s\n", i, argv[i] );
  233. }
  234. }
  235. }
  236.  
  237.  
  238. /* "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