δεν κατάλαβα αυτό με το προσωρινό string, και επίσης, δυσκολεύομαι στο να δω πως στον κώδικα θα αποκλείσω ότι θα εισαγάγω ίδιο όνομα και να μη το δέχεται ο κώδικας.
Αυτήν τη στιγμή ο κώδικάς σου βάζει αυτό που διαβάζει μέσα στον πίνακα (getline(cin, frasi[i]);
) και μετά ελέγχει αν αυτό που διαβάστηκε υπάρχει μέσα στον πίνακα (find_it(frasi, 10, frasi[i])
).
Αυτό που προτείνω είναι να μη διαβάζεις κατευθείαν μέσα στον πίνακα, αλλά σε μια άλλη μεταβλητή (πχ getline(cin,temp)
) και μετά να ψάχνεις αν η τιμή αυτής τη μεταβλητής υπάρχει στον πίνακα ( find_it(frasi,10,temp)
) και στη συνέχεια, αν δεν υπάρχει, να το βάζεις στον πίνακα (frasi[i]=temp;
).
Σχετικά με το loop find_it, το j το έβαλα ώστε να προσπαθήσω να ελέγχω απο 0 ως i-1 για το αν υπάρχει όνομα ίδιο με το frasi[i]. Αυτό αλλιώς πως θα μπορούσα να το κάνω;
Το i
όμως που λές πηγαίνει από 0 έως n, οπότε το j
θα πάρει τιμές: 0, 0 ως 1, 0 ως 2, 0 ως 3, ...... , 0 ως n-1. Δεν είναι το i
της main.
το πρώτο find_it το έβαλα ωστε να μπορεί να ψάξει και το δεύτερο ώστε να πάρει η συνθήκη την τιμή της συνάρτησης και να τη χρησιμοποιήσει.
Η συνάρτηση δεν ξέρει αν βρίσκεται σε συνθήκη. Σε όποιο σημείο και να την καλέσεις αυτή ενδιαφέρεται μόνο για τα ορίσματα που τις δίνεις και θα επιστρέψει μια τιμή. Εσύ με το πρώτο find_it
ψάχνεις να δεις αν υπάρχει μια λέξη στον πίνακά σου και αγνοείς το αποτέλεσμα και στο δεύτερο πάλι ψάχνεις να δεις αν υπάρχει η ίδια λέξη μέσα στον πίνακα, αλλά αυτή την φορά χρησιμοποιείς στη συνθήκη το αποτέλεσμα που σου γυρίζει η συνάρτηση για το if.