Προς το περιεχόμενο

συμβολοσειρεσ και κωδικασ ascii στην c


renouko

Προτεινόμενες αναρτήσεις

Δημοσ.

καλησπερα θα ηθελα να ρωτησω σχετικα με την γλωσσα προγραμματισμου C

 

οταν το προγραμμα διαβαζει μια συμβολοσειρα

πωσ μπορω να την βαλω σε ενα πινακα ετσι ωστε μετα να μπορω

να αλλαξω τα γραμματα που εχουν αποθηκευτει σε αυτον τον πινακα εκτοσ του κενου

π.χ εχω την προταση "ti kaneis'

και θελω να εμφανιστει η προταση"ug lbofgt"

Δημοσ.

κάτι τέτοιο θα σε βοηθήσει πιστεύω

>
#include <stdio.h>
#include <string.h>

int main(){
   char protasi[31];//μέχρι 30 γράμματα
   char    ab[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";//η γραμματοσειρά που χρησιμοποιούμε
   char newab[27]="WXEFGHYZATUBKLJQRMNOPCDISV";//η νέα γραμματοσειρά αντικατάστασης π.χ. Α->W ,I->A κ.τ.λ.
   printf("\ndose protasi mexri 30 grammata(KEFALAIA MONO):");
   gets(protasi);//αν δώσω ABCD ABCF σαν πρόταση,δεν καλύπτω όλες τις θέσεις του πίνακα
   int mikos=strlen(protasi);//πόσοι χαρακτήρες χρησιμοποιήθηκαν συνολικά από τον χρήστη για την πρόταση
   int i=0,j=0;
   for (i=0;i<mikos;i++)//για κάθε γράμμα της πρότασης
   for (j=0;j<26;j++){//για κάθε γράμμα του αλφαβήτου
        if (protasi[i]==ab[j]){//αν το γράμμα στην θέση i είναι το ίδιο με το γράμμα στην θέση j του αλφαβήτου τότε
               protasi[i]=newab[j];//αντικατέστησε το γράμμα στην θέση i με το γράμμα j του νέου αλφάβητου
               break;//τέλος με το αλφάβητο πάμε στο επόμενο γράμμα της πρότασης
           }
       }
   printf("\n h protasi egine: %s",protasi);
   getchar();
   getchar();
return 0;
}

Δημοσ.

:):)

με βοηθησε παρα πολυ...

απλα αντιμετωπιζω ενα προβλημα που αντιμετωπιζα παλι στην αρχη..

αν βαλω την gets() κατω απο την εκτυπωση "δωσε την προταση"

οταν το εκτελω το προγραμμα δν μπορω να γραψω το κειμενο μου ενω αν την αντικαταστησω την get() με την scanf("%s",protasi)

μπορω να γραψω το κειμενο μου..

Δημοσ.

1) δοκίμασες τον κώδικα μου αυτούσιο και έκανε αυτό που λες?

 

2) τι compiler χρησιμοποιείς?

 

3) το scanf(..... διαβάζει μέχρι να δώσεις κενό ή enter

οπότε σίγουρα δεν σου κάνει για πρόταση

 

4)στείλε τον προβληματικό κώδικα που λες

με την gets

Δημοσ.

οχι δεν χρησιμοποιησα των δικο σου κωδικα....

χρησιμοποιω το dev-C++

τωρα θα τον στειλω αυτα που εχω κανει

 

---------- Το μήνυμα προστέθηκε στις 17:44 ----------

 

#include <stdio.h>

#include <string.h>

 

 

int main()

{ char str[128];

char string [54]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

int a,b,l;

printf("Dwse to ari8mitiko kleidi:\n");

scanf("%d",&a);

while (a!=1 && a!=-1)

{

printf("dwse neo arithmitiko kleidi(1 h -1):\n");

scanf("%d",&a);

}

printf("Dwse thn kateu8unsh:\n");

scanf("%d",&B);

printf("Dwse to mumhma :\n");

gets(str);

 

system("PAUSE");

return EXIT_SUCCESS;

}

 

---------- Το μήνυμα προστέθηκε στις 17:46 ----------

 

εχει και αλλα ο κωδικασ απλα σε αυτο το σημειο μ παρουσιαζει το προβλημα με την gets()

Δημοσ.
:):)

αν βαλω την gets() κατω απο την εκτυπωση "δωσε την προταση"

οταν το εκτελω το προγραμμα δν μπορω να γραψω το κειμενο μου

 

εννοείς οτι το πρόγραμμα σου δεν σταματέι για να παρει είσοδο?

αν είναι έτσι τοτε το πρόβλημα είναι οτι υπάρχει ήδη κάτι στο ρεύμα εισόδου

αυτό γίνεται αν έχει προηγηθεί άλλη scanf τότε το enter μένει στο ρευμα εισόδου

πριν απο την gets βάλε άλλη μια gets και εισαι κομπλε

πχ.

>
gets(s);
gets(s);

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...