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

προβλημα λειτουργιας


vraxoulis

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

Δημοσ.

γεια σας εχω τον παρακατω κωδικα και παρολο που μου φαινεται σωστος

δν εμφανιζεται το νεο μηνυμα...

μπορει κανεις να με βοηθησει?

 

κωδικα:

#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)

Δημοσ.
>
#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;

}

Δημοσ.

ααααααααααα

 

δηλαδη επειδη δεν ειχα δηλωσει το τελος του string

δεν ηξερε το προγραμμα αν ειχε τελειωσει...

thanks

Δημοσ.

κάθε string τελειώνει με το '\0'

 

π.χ. a,b,c,d,\0

εσύ εδώ το αντιστρέφεις

και επειδή είχες ξεχάσει το -1 στον μετρητή κ=mikos-i

έβαζες τον χαρακτήρα \0 πρώτο,το οποίο δηλώνει το τέλος του string

άρα το νέο string σου ήταν κενό φυσικά.

 

έπειτα αφού έχει 129 όρισμα πρέπει να του πεις που τελειώνουν τα δεδομένα του

στην θέση mikos δηλαδή

Δημοσ.

κατι ακομα για τον παραπανω κωδικα..

προσπαθω να ελεγξω αν τα γραμματα ειναι κεφαλαια και αν δεν ειναι να του ζηταει να δωθει μια νεα γραμματοσειρα και το κανω αλλα το προγραμμα μου παντα μ ζηταει να του δωσω ενα νεο μημυμα ακομα και κεφαλαια να ειναι ..

εβαλα τα κεφαλαια γραμματα σε ενα πινακα και μετα σε συναρτηση

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

Δημοσ.

έκανες αλλά κώδικα δεν βλέπω.

στείλε τον να δούμε τα τυχόν λάθη.

 

μία λύση είναι να τα κάνεις αυτόματα κεφαλαία όλα και ξεμπερδεύεις

 

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

 

ctype.h αυτό θες..

 

http://www.cplusplus.com/reference/clibrary/cctype/

 

αλλά υπάρχει πιο απλός τρόπος

στείλε τον κώδικα σου να σου δείξω τι εννοώ

Δημοσ.

#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;

 

}

Δημοσ.

>
#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 με τα κεφαλαία κτλπ.

Δημοσ.

>

#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

Δημοσ.

virxen75 αν και είσαι από τα λίγα άτομα που σέβομαι που κανουν πόστ εδώ μέσα θα κρίνω λίγο με αυτά που έχεις γράψει όχι για να σου κάνω κόντρα αλλά για δει το παιδί.

πρότων θα πρότεινα το

 

char string[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

 

να γίνει

 

char string[] ="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

 

μιάς και το θέλουμε ως rodata. (ακόμα και αν το string αυτό ούτως η άλλως είναι άχριστο sto setting μας, καλό που το επισήμανες) όπως και να συμβουλέψω ενάντια στο do - while μιάς και η χρήση του είναι "a bug waiting to happen"

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

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

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