kousman Δημοσ. 2 Δεκεμβρίου 2009 Δημοσ. 2 Δεκεμβρίου 2009 εχω μια ασκηση που λεει να της δοσουμε μια λεξη με κεφαλαια και το προγραμμα να βαζει τα κεφαλαια σε ενα νεο πινακα .Θα βρίσκει πρώτα όλα τα φωνήεντα του αλφαριθμητικού και θα αντιστρέφει τη σειρά τους και μετά θα βρίσκει όλα τα σύμφωνα του αλφαριθμητικού και θα αντιστρέφει τη σειρά τους. Στο τέλος θα τυπώνει στην οθόνη το αποτέλεσμα. εγω εχω φτιαξει μια συναρτηση που να ελεγχει για κεφαλαια αλλη μια για την αντιστροφή των φωνηέντων και αλλη μια για την αντιστροφή των συμφώνων. εχω σκαλωσει και δεν μπορω να ενωσω του πινακες δλδ οταν δινω μονο φωνηεντα ή μονο συμφωνα δουλευει αν τα δωσω ολα μαζι δεν δουλευει...μπορειτε να βοηθήσετε? #include<stdio.h> #include<stdlib.h> char x[128]; char isupper(char[],int k); int pos_psifia,k,i,j,timi; main() { printf("dose sim"); gets(x); while(x) // find the length of the sting { i++; } pos_psifia=i; printf("pos_psifia"); printf("%d",pos_psifia); if(pos_psifia>128) { printf("dosate parapano xaraktires sto string"); //elegxos megethos sumvoloseiras exit(0); } isupper(x,pos_psifia); system("pause"); } /********************************SINARTISEIS*****************************/ char isupper(char x[],int k) { void isvowels(char x[],int c); char tiposi[128]; char kef[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char sim[]="BCDFGHGKLMNPQRSTVWXYZ"; int i,v=0; char fon[]="AEOIU"; char sum[]="BCDFGHJKLMNPQRSTVWXYZ"; for(i=0;i<=pos_psifia;i++) { timi=0; for(k=0;k<=26;k++) { if(x==kef[k]) { tiposi=kef[k]; timi=1; } } if (timi==0) { printf("oxi"); exit(0); } } puts(tiposi); isvowels(x,pos_psifia); return(0); } void isvowels(char x[],int pos_psifia) { char kef[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char sim[]="BCDFGHGKLMNPQRSTVWXYZ"; int i,f,b,fo[128],thesi[128],j,orio,temp_1,m,z,pos_fo,v=0; char fon[]="AEOIU"; char sum[]="BCDFGHJKLMNPQRSTVWXYZ"; char kai[128]; void iscon(char x[],int pos_psifia); j=0; f=0; for(i=0;i<=pos_psifia;i++) { for(k=0;k<=4;k++) { if(x==fon[k]) { fo[j]=i; j++; } } } //EDO THA BEI IS CONSO iscon(x,pos_psifia); pos_fo=j; printf("FONIENTA:%d",pos_fo); for(i=0;i<pos_fo;i++) { thesi=fo; } if((pos_fo%2)==0) { orio=pos_fo/2; for(i=0;i<orio;i++) { temp_1=fo; fo=fo[pos_fo-i-1]; fo[pos_fo-i-1]=temp_1; } for(b=0;b<pos_fo;b++) { z=thesi; m=fo; kai[z]=x[m]; } } else if((pos_fo%2)!=0) { orio=pos_fo%2; for(i=0;i<orio;i++) { temp_1=fo; fo=fo[pos_fo-i-1]; fo[pos_fo-i-1]=temp_1; } for(b=0;b<pos_fo;b++) { z=thesi; m=fo; kai[z]=x[m]; } } for (b=0;b<pos_fo;b++) printf("%c",kai); } void iscon(char x[],int pos_psifia) { char kef[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char sim[]="BCDFGHGKLMNPQRSTVWXYZ"; int i,f,s,b,thesi1[128],su[128],orio,temp_1,m,z,pos_su,v=0; char fon[]="AEOIU"; char sum[]="BCDFGHJKLMNPQRSTVWXYZ"; char kai[128]; f=0; for(i=0;i<=pos_psifia;i++) { for(s=0;s<=20;s++) { if(x==sum) { su[f]=i; f++; } } } pos_su=f; printf("sumfona:%d",pos_su); for(i=0;i<pos_su;i++) { thesi1=su; } if((pos_su%2)==0) { orio=pos_su/2; for(i=0;i<orio;i++) { temp_1=su; su=su[pos_su-i-1]; su[pos_su-i-1]=temp_1; } for(b=0;b<pos_su;b++) { z=thesi1; m=su; kai[z]=x[m]; } } else if((pos_su%2)!=0) { orio=pos_su%2; for(i=0;i<orio;i++) { temp_1=su; su=su[pos_su-i-1]; su[pos_su-i-1]=temp_1; } for(b=0;b<pos_su;b++) { z=thesi1; m=su; kai[z]=x[m]; } } for (b=0;b<pos_su;b++) printf("%c",kai); }
Pantelwolf Δημοσ. 2 Δεκεμβρίου 2009 Δημοσ. 2 Δεκεμβρίου 2009 Άσχετο με την ερώτηση αλλα έχω την αίσθηση οτι αν δώσεις παραπάνω απο 127 ψαρακτηρες θα πάει και θα γράψει στην επόμενη θέση στη μνήμη και δεν το θες αυτό. Επίσης δεν είμαι σίγουρος οτι δουλεύει ο έλεγχος μεγέθους έτσι (αν θα θεωρήσει το \0 ως εξοδο απο τη while). Ας το κοιτάξει και κανας άλλος δεν έχω compiler μπροστα μου.
Evgenios1 Δημοσ. 2 Δεκεμβρίου 2009 Δημοσ. 2 Δεκεμβρίου 2009 τα 2 '=' ειναι bug στο φορουμ, βαλε το κωδια σε code tag
kousman Δημοσ. 2 Δεκεμβρίου 2009 Μέλος Δημοσ. 2 Δεκεμβρίου 2009 σορρυ αλλα δεν ξερω πως να το κανω με code tag το ψαχνω ---------- Το μήνυμα προστέθηκε στις 16:09 ---------- >#include<stdio.h> #include<stdlib.h> char x[128]; char isupper(char[],int k); char iscon(char x[],int pos_psifia); char isvowels(char x[],int pos_psifia); int pos_psifia,k,i,j,timi; main() { printf("dose sim"); gets(x); while(x[i]) // find the length of the sting { i++; } pos_psifia=i; printf("pos_psifia"); printf("%d",pos_psifia); if(pos_psifia>128) { printf("dosate parapano xaraktires sto string"); //elegxos megethos sumvoloseiras exit(0); } isupper(x,pos_psifia); system("pause"); } /********************************SINARTISEIS*****************************/ char isupper(char x[],int k) { void isvowels(char x[],int c); char tiposi[128]; char kef[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char sim[]="BCDFGHGKLMNPQRSTVWXYZ"; int i,v=0; char fon[]="AEOIU"; char sum[]="BCDFGHJKLMNPQRSTVWXYZ"; for(i=0;i<=pos_psifia;i++) { timi=0; for(k=0;k<=26;k++) { if(x[i]==kef[k]) { tiposi[i]=kef[k]; timi=1; } } if (timi==0) { printf("oxi"); exit(0); } } puts(tiposi); isvowels(x,pos_psifia); iscon(x,pos_psifia); return(0); } char isvowels(char x[],int pos_psifia) { char kef[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char sim[]="BCDFGHGKLMNPQRSTVWXYZ"; int i,f,b,fo[128],thesi[128],j,orio,temp_1,m,z,pos_fo,v=0; char fon[]="AEOIU"; char sum[]="BCDFGHJKLMNPQRSTVWXYZ"; char kai[128]; void iscon(char x[],int pos_psifia); j=0; f=0; for(i=0;i<=pos_psifia;i++) { for(k=0;k<=4;k++) { if(x[i]==fon[k]) { fo[j]=i; j++; } } } //EDO THA BEI IS CONSO iscon(x,pos_psifia); pos_fo=j; for(i=0;i<pos_fo;i++) { thesi[i]=fo[i]; } if((pos_fo%2)==0) { orio=pos_fo/2; for(i=0;i<orio;i++) { temp_1=fo[i]; fo[i]=fo[pos_fo-i-1]; fo[pos_fo-i-1]=temp_1; } for(b=0;b<pos_fo;b++) { z=thesi[b]; m=fo[b]; kai[z]=x[m]; } } else if((pos_fo%2)!=0) { orio=pos_fo%2; for(i=0;i<orio;i++) { temp_1=fo[i]; fo[i]=fo[pos_fo-i-1]; fo[pos_fo-i-1]=temp_1; } for(b=0;b<pos_fo;b++) { z=thesi[b]; m=fo[b]; kai[z]=x[m]; } } for (b=0;b<pos_fo;b++) printf("%c",kai[b]); } char iscon(char x[],int pos_psifia) { char kef[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char sim[]="BCDFGHGKLMNPQRSTVWXYZ"; int i,f,s,b,thesi1[128],su[128],orio,temp_1,m,z,pos_su,v=0; char fon[]="AEOIU"; char sum[]="BCDFGHJKLMNPQRSTVWXYZ"; char kai[128]; f=0; for(i=0;i<=pos_psifia;i++) { for(s=0;s<=20;s++) { if(x[i]==sum[s]) { su[f]=i; f++; } } } pos_su=f; for(i=0;i<pos_su;i++) { thesi1[i]=su[i]; } if((pos_su%2)==0) { orio=pos_su/2; for(i=0;i<orio;i++) { temp_1=su[i]; su[i]=su[pos_su-i-1]; su[pos_su-i-1]=temp_1; } for(b=0;b<pos_su;b++) { z=thesi1[b]; m=su[b]; kai[z]=x[m]; } } else if((pos_su%2)!=0) { orio=pos_su%2; for(i=0;i<orio;i++) { temp_1=su[i]; su[i]=su[pos_su-i-1]; su[pos_su-i-1]=temp_1; } for(b=0;b<pos_su;b++) { z=thesi1[b]; m=su[b]; kai[z]=x[m]; } } for (b=0;b<pos_su;b++) printf("%c",kai[b]); }
virxen75 Δημοσ. 3 Δεκεμβρίου 2009 Δημοσ. 3 Δεκεμβρίου 2009 τι εννοείς θα αντιστρέφει τα φωνήεντα(την σειρά τους)? αν δώσω δηλαδή το abcdABEGHDYHIOPDPTHIBM ποιο θα είναι το σωστό αποτέλεσμα?
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.