vraxoulis Δημοσ. 1 Δεκεμβρίου 2009 Δημοσ. 1 Δεκεμβρίου 2009 γεια σας εχω τον παρακατω κωδικα και παρολο που μου φαινεται σωστος δν εμφανιζεται το νεο μηνυμα... μπορει κανεις να με βοηθησει? κωδικα: #include <stdio.h> #include <string.h> int main() { int k; int i=0; char str1[128]; char str[129]; int mikos; printf("dwse ena minima:"); gets(string); mikos=strlen(str); for (i=0;i<mikos;i++){ k=mikos-i; str1=str[k]; break; } printf("neo minima:%s",str1); getchar(); getchar(); return 0; } ---------- Το μήνυμα προστέθηκε στις 01:01 ---------- οπου gets(string) ειναι gets(str)
vraxoulis Δημοσ. 1 Δεκεμβρίου 2009 Μέλος Δημοσ. 1 Δεκεμβρίου 2009 ναιιιιι εγω τον εχω γραψειιιι!!!!!!!!!!!!!
virxen75 Δημοσ. 1 Δεκεμβρίου 2009 Δημοσ. 1 Δεκεμβρίου 2009 > #include <stdio.h> #include <string.h> int main() { int k; int i=0; char str1[128]; char str[129]; int mikos; printf("dwse ena minima:"); gets(str); mikos=strlen(str); for (i=0;i<mikos;i++){ k=mikos-i[color="Red"]-1[/color];//πίνακες από 0.. str1[i]=str[k]; [color="Red"]//break;[/color] } [color="Red"]str1[mikos]='\0';[/color]//με αυτό δηλώνεις το τέλος του string printf("neo minima: %s",str1); getchar(); getchar(); return 0; }
vraxoulis Δημοσ. 1 Δεκεμβρίου 2009 Μέλος Δημοσ. 1 Δεκεμβρίου 2009 ααααααααααα δηλαδη επειδη δεν ειχα δηλωσει το τελος του string δεν ηξερε το προγραμμα αν ειχε τελειωσει... thanks
virxen75 Δημοσ. 1 Δεκεμβρίου 2009 Δημοσ. 1 Δεκεμβρίου 2009 κάθε string τελειώνει με το '\0' π.χ. a,b,c,d,\0 εσύ εδώ το αντιστρέφεις και επειδή είχες ξεχάσει το -1 στον μετρητή κ=mikos-i έβαζες τον χαρακτήρα \0 πρώτο,το οποίο δηλώνει το τέλος του string άρα το νέο string σου ήταν κενό φυσικά. έπειτα αφού έχει 129 όρισμα πρέπει να του πεις που τελειώνουν τα δεδομένα του στην θέση mikos δηλαδή
vraxoulis Δημοσ. 1 Δεκεμβρίου 2009 Μέλος Δημοσ. 1 Δεκεμβρίου 2009 κατι ακομα για τον παραπανω κωδικα.. προσπαθω να ελεγξω αν τα γραμματα ειναι κεφαλαια και αν δεν ειναι να του ζηταει να δωθει μια νεα γραμματοσειρα και το κανω αλλα το προγραμμα μου παντα μ ζηταει να του δωσω ενα νεο μημυμα ακομα και κεφαλαια να ειναι .. εβαλα τα κεφαλαια γραμματα σε ενα πινακα και μετα σε συναρτηση ελεχγω αν ειναι μονο κεφαλαια και μετα την καλω την συναρτηση
vraxoulis Δημοσ. 1 Δεκεμβρίου 2009 Μέλος Δημοσ. 1 Δεκεμβρίου 2009 και τα αλλα θα τα αφησω οπως τα εκανα και απλα θα προσθεσω αυτη την βιβλιοθηκη?
virxen75 Δημοσ. 1 Δεκεμβρίου 2009 Δημοσ. 1 Δεκεμβρίου 2009 έκανες αλλά κώδικα δεν βλέπω. στείλε τον να δούμε τα τυχόν λάθη. μία λύση είναι να τα κάνεις αυτόματα κεφαλαία όλα και ξεμπερδεύεις ---------- Το μήνυμα προστέθηκε στις 21:03 ---------- ctype.h αυτό θες.. http://www.cplusplus.com/reference/clibrary/cctype/ αλλά υπάρχει πιο απλός τρόπος στείλε τον κώδικα σου να σου δείξω τι εννοώ
vraxoulis Δημοσ. 1 Δεκεμβρίου 2009 Μέλος Δημοσ. 1 Δεκεμβρίου 2009 #include <stdio.h> #include <string.h> int main() { int k; int i=0,j=0,q=0; int y; char str1[128]; char string[129]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char str[128]; int mikos; printf("dwse ena minima:"); gets(str); mikos=strlen(str); for (j=0;j<mikos;j++){ for (q=0;q<27;q++){ if(str[j]!=string[q]){ y=0; } } } if(y==0){ printf("dwse neo minima:"); gets(str); mikos=strlen(str); } for (i=0;i<mikos;i++){ k=mikos-i-1; str1=str[k]; } str1[mikos]='\0'; printf("neo minima: %s",str1); getchar(); getchar(); return 0; } ---------- Το μήνυμα προστέθηκε στις 21:15 ---------- #include <stdio.h> #include <string.h> int main() { int k; int i=0,j=0,q=0; int y; char str1[128]; char string[129]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char str[128]; int mikos; printf("dwse ena minima:"); gets(str); mikos=strlen(str); for (j=0;j<mikos;j++){ for (q=0;q<27;q++){ if(str[j]!=string[q]){ y=0; } } } if(y==0){ printf("dwse neo minima:"); gets(str); mikos=strlen(str); } for (i=0;i<mikos;i++){ k=mikos-i-1; str1=str[k]; } str1[mikos]='\0'; printf("neo minima: %s",str1); getchar(); getchar(); return 0; }
ippo00 Δημοσ. 1 Δεκεμβρίου 2009 Δημοσ. 1 Δεκεμβρίου 2009 > #include <stdio.h> #include <string.h> int main () { int k; int i = 0, j = 0, q = 0; int y; char str1[128]; char string[129] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char str[128]; int mikos; printf ("dwse ena minima:"); gets (str); mikos = strlen (str); for (i = 0; i < mikos; i++) { if (str[i] < 'A' || str[i] > 'Z') { printf ("dwse neo minima:"); gets (str); mikos = strlen (str); i = -1; } } for (i = 0; i < mikos; i++) { k = mikos - i - 1; str1[i] = str[k]; } str1[mikos] = '\0'; printf ("neo minima: %s", str1); getchar (); getchar (); return 0; } 'Ντάξει πρέπει να το κανεις clean up να βγάλεις και το string με τα κεφαλαία κτλπ.
virxen75 Δημοσ. 1 Δεκεμβρίου 2009 Δημοσ. 1 Δεκεμβρίου 2009 > #include <stdio.h> #include <string.h> int main() { int k; int i=0,j=0,q=0; int y; char str1[128]; char string[[color="Red"]27[/color]]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char str[128]; int ok=1; int mikos; [color="Red"]do{[/color] printf("dwse ena minima:"); gets(str); mikos=strlen(str); [color="Red"] ok=1; for (j=0;j<mikos;j++) if (str[j]<'A' || str[j]>'Z') { ok=0; break; } }while(ok==0);[/color] for (i=0;i<mikos;i++){ k=mikos-i-1; str1[i]=str[k]; } str1[mikos]='\0'; printf("neo minima: %s",str1); getchar(); getchar(); return 0; } πιο απλά με do while
ippo00 Δημοσ. 1 Δεκεμβρίου 2009 Δημοσ. 1 Δεκεμβρίου 2009 virxen75 αν και είσαι από τα λίγα άτομα που σέβομαι που κανουν πόστ εδώ μέσα θα κρίνω λίγο με αυτά που έχεις γράψει όχι για να σου κάνω κόντρα αλλά για δει το παιδί. πρότων θα πρότεινα το char string[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; να γίνει char string[] ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; μιάς και το θέλουμε ως rodata. (ακόμα και αν το string αυτό ούτως η άλλως είναι άχριστο sto setting μας, καλό που το επισήμανες) όπως και να συμβουλέψω ενάντια στο do - while μιάς και η χρήση του είναι "a bug waiting to happen"
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.