Με πέδεψε πάρα πολύ αλλά με βοήθησε αφού μέχρι να την λύσω χρησιμοποίησα δείκτες,συναρτήσεις κτλ.Τελικά το μόνο που χρειαζόταν ήταν σκέψη στον τρόπο και όχι στον κώδικα!Να και η λύση:
- Κώδικας: Επιλογή όλων
/* ------------------------------------------------------
* Από: Qdata
*
* Άσκηση: Γράψτε μια συνάρτηση που θα παίρνει ως ορίσματα δυο strings και
* θα ελέγχει για το αν το ένα είναι αναγραμματισμός του άλλου.
* Θα επιστρέφει TRUE αν είναι, FALSE αν δεν είναι (ή 1 και 0, αντίστοιχα).
*
* Παραδείγματα:
*
* "abcd", "dbca" δίνει TRUE
* "helle", "hollo" δίνει FALSE
* "z", "zzz" δίνει FALSE
* "zzz", "z" δίνει FALSE
* "z", "z" δίνει TRUE
* -----------------------------------------------------
*/
#include <stdio.h>
#include <string.h> /* για strlen() */
/*-------------------- Main Fuction --------------------*/
main()
{
int len,result;
char first_word[100],second_word[100];
printf("Δώστε την πρώτη λέξη: ");
gets(first_word);
printf("Δώστε την δεύτερη λέξη: ");
gets(second_word);
len = strlen(first_word);
result = strcheck(len,first_word,second_word);
if(result == 1)
printf("Οι πρώτη λέξη είναι αναγραμματισμός της άλλης.\n");
else
printf("Καμία από τις λέξεις δεν είναι αναγραμματισμός της άλλης.\n");
}
/*-------------------- String Check --------------------*/
int strcheck(int len_from_main,char str_one[100], char str_two[100])
{
int i,j; /*για for loop*/
int len,count;
len = len_from_main;
count = 0;
for(i=0,j=(len-1);i != (len+1), j != 0;++i,j=j-1)
{
if(str_one[i] == str_two[j])
++count;
}
++count;
if(count == len)
return 1;
else
return 0;
}
/*------------------- End of program -------------------*/
(Συγνώμη που δεν χρησιμοποίησα πολλά σχόλια.Θα προσπαθήσω να κάνω πιο ευανάγνωστο τον κώδικα.)
Επίσης ξέρω πως η γραμμή:
- Κώδικας: Επιλογή όλων
if(str_one[i] == str_two[j])
Δεν είναι ότι το καλύτερο για να συγκρίνω την θέση του πίνακα αλλά όταν χρησιμοποιούσα κάτι άλλο που έβγαζε σφάλματα.
@migf1 Πολύ ωραία η άσκηση!



