christodoulos Δημοσ. 2 Δεκεμβρίου 2013 Δημοσ. 2 Δεκεμβρίου 2013 πως μπορω να φτιαξω την παρακατω αρχικοποιηση του πινακα μου σε συναρτηση? main{ printf("Give the message to be encoded:\n\n"); gets(arr); len=strlen(arr); for(i=0;i<strlen(arr);++i){ if(arr>='a' && arr<='z'){ valArr = arr-'a'+1; } if(arr>='A' && arr<='Z'){ valArr = arr-'A'+1; } } ουσιαστικα γεμιζω τον πινακα μου valArr με τα γραμματα του αλφαβητου.ευχαριστω
Star_Light Δημοσ. 2 Δεκεμβρίου 2013 Δημοσ. 2 Δεκεμβρίου 2013 Αν θές να γεμισεις τον πίνακα με τα γράμματα του αλφαβητου μπορεις να κάνεις το εξής : int i=0; for(; i<LEN; i++) arr[i] = 'A' + i; Το LEN ειναι ντιρεκτίβα με το μέγεθος του πίνακα αντι να παιξεις με magic numbers ορισε το εξαρχης εσυ και χρησιμοποιησε το μετά. #include<stdio.h> #define LEN 10 int main(void) { int i=0; char arr[LEN]; for(; i<LEN; i++) arr[i] = 'A' +i; for(i=0; i<LEN; i++) printf("%c" , arr[i]); return 0; } ABCDEFGHIJ ή #include<stdio.h> #define LEN 10 int main(void) { int i=0; char arr[LEN]= "ABCDEFJHI"; for(i=0; i<LEN; i++) printf("%c" , arr[i]); return 0; } πως μπορω να φτιαξω την παρακατω αρχικοποιηση του πινακα μου σε συναρτηση? main{ printf("Give the message to be encoded:\n\n"); gets(arr); len=strlen(arr); for(i=0;i<strlen(arr);++i){ if(arr>='a' && arr<='z'){ valArr = arr-'a'+1; } if(arr>='A' && arr<='Z'){ valArr = arr-'A'+1; } } ουσιαστικα γεμιζω τον πινακα μου valArr με τα γραμματα του αλφαβητου.ευχαριστω Kαλεις 2 φορές την strlen η δευτερη ειναι μεσα στο for ενω έχεις εκχωρησει ηδη την τιμή της μέσα στο len. Αντι για την gets καλυτερα να χρησιμοποιήσεις την fgets που βάζει εγγυημένα '\0' στο τέλος ενος string ακομα και αν ο χρήστης πληκτρολογησει παραπανω χαρακτήρες απο το μήκος του πίνακα. Αν ο χρηστης πληκτρολογησει λιγότερους απο το μήκος του πίνακα τοτε βάζει και το ENTER και τον '\0' μέσα στον πινακα. Οσο για τα κεφαλαία και τα μικρά γράμματα μην αγχώνεσαι μπορεις να χρησιμοποιήσεις την συνάρτηση toupper οπου οταν ο χρηστης δινει ένα μικρο αυτο μετατρέπεται σε κεφαλαίο χωρις να το αντιλαμβάνεται εσωτερικα απο το πρόγραμμα οποτε θα δουλεύει εντάξει. 1
christodoulos Δημοσ. 2 Δεκεμβρίου 2013 Μέλος Δημοσ. 2 Δεκεμβρίου 2013 πως μπορω να το περασω αυτο ομως σε μια συναρτηση εκτος main?
bird Δημοσ. 2 Δεκεμβρίου 2013 Δημοσ. 2 Δεκεμβρίου 2013 Αν έχει μάθει δείκτες κάπως έτσι... char *fill_array(char *array, int n){ int i; // Cheks for null pointer or negative size if (!array || n < 0) return(NULL); for ( i = 0; i < n; i++ ) array[i] = 'a' + i; return array; } // Και στην main την καλείς κάπως έτσι... int main( void ) { ... fill_array(valArr, strlen(arr)); ... } Τη συνάρτηση την έγραψα στο "πόδι" χωρίς compile αλλά αυτή είναι η λογική... Edit: Αν θέλεις να αντιγράφεις στον πίνακα valArr τον arr μέσα στη συνέρτηση τότε: char *fill_array(char *to_array, char *from_array, int n){ int i; // Cheks for null pointer or negative size if (!from_array || !to_array || n < 0) return(NULL); for ( i = 0; i < n; i++ ) to_array[i] = from_array[i] - 'a' + i; return to_array; } // και καλείς από τη main... fill_array(valArr, arr, strlen(arr)) (Τα if που είχες βάλει δεν τα έβαλα για συντομία...) επίσης στην main καλό είναι να κάνεις κι έναν έλεγχο if (fill_array(...) == NULL){ // Print error... } 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα