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

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

Δημοσ. (επεξεργασμένο)

καλησπέρα!! είμαι αρχάρια στον προγραμματισμό και αντιμετωπίζω κάποια δυσκολια στην εργασία που μας έχουν βάλει...μπορεί κάποιος να με βοηθήσει και να μου εξηγήσει που κάνω λάθος στο παρακάτω πρόγραμμα και δεν μου τρέχει?

Επεξ/σία από nansu
Δημοσ.

Καταρχάς βάλε code tags στον κώδικα να είναι πιο ευανάγνωστος.

 

Για παράδειγμα:

 

>
{
while(s[length]!='\0')
length++;
if (length==0)
return (0);
else
return s[length-1];
}

Δημοσ.

Προσπαθείς να περάσεις πίνακα σε συνάρτηση. Δεν γίνεται έτσι απλά πρέπει να χρησιμοποιήσεις δείκτες... νομίζω. ^_^

 

Αμα περασεις πινακα δεν.χρειαζεται pointer τον παιρνει ετσι τον πινακα κ οι αλλαγες μενουν. Για μια μεταβλητη χρειαζεται pointer

Δημοσ.
>#include<stdio.h>
#include<stdlib.h>
char endchar(char s[]);
void reverse(char s[]);
void cluster(char s[]);


int length=0;
int i=0;

int main()
{

   char s[20];
   
   printf("dwse mia sumboloseira:\n");
   scanf("%s",s);
   
   printf("o teleutaios xaraktiras einai o:%c\n",endchar(s));
   
   reverse(s);
   
   printf("h antistrofh einai:%s\n", s);
   
   printf("dwse mia sumboloseira me mono b kai c\n");
   scanf("%s",s);
   cluster(s);
   printf("%s\n", s);
   getchar();
   getchar();
}

char endchar(char s[])
{
   while(s[length]!='\0')
   length++;
   if (length==0)
   return (0);
   else
   return s[length-1];
}

void reverse(char s[])
{
   char c;
   char *p, *pp;

   p = s;
   if (!p)
       return;

   pp = p + 1;
   if (*pp == '\0')
       return;

   c = *p;
   reverse(pp);

   while (*pp != '\0')
   {
       *p = *pp;
       p++;
       pp++;
   }
   *p = c;

   return;
}

void cluster(char s[])
{
 int j, len;
 char *p;
 char temp;
 
 i = 0;
 len = strlen(s);
 p = s;

 for (i = (len - 1); i > 0; i--)
 {
   for (j = 1; j <= i; j++)
   {
     if (*(p+j-1) > *(p+j))
     {
       temp = *(p+j-1);
       *(p+j-1) = *(p+j);
       *(p+j) = temp;
     }
   }
 }
}

Κάτι τέτοιο;

Δημοσ.

Σας ευχαριστώ πάρα πολύ όλους!!!! :rolleyes:

Και σίγουρα thano κάτι τέτοιο είναι τέλειο!!!!!!!!!σε ευχαριστώ πολύ πολύ!!!!!

Δημοσ.

η μια από τις 10 ασκήσεις που μας έχουν βάλει στο μαθημα προγραμματισμού της σχολή μου(προτιμώ να μην πω σε ποια σχολή είμαι από εδώ) και η μόνη που δεν μου έτρεχε σωστα...

Δημοσ.

καλησπέρα!! είμαι αρχάρια στον προγραμματισμό και αντιμετωπίζω κάποια δυσκολια στην εργασία που μας έχουν βάλει...μπορεί κάποιος να με βοηθήσει και να μου εξηγήσει που κάνω λάθος στο παρακάτω πρόγραμμα και δεν μου τρέχει?

 

Έχε υπόψη όταν διατυπώνεις τις ερωτήσεις σου πως δεν είμαστε πάνω απ' τον ώμο σου ούτε μέσα στο μυαλό σου. Όταν λοιπόν λες "δεν μου τρέχει", εσύ ξέρεις πολύ καλά τι εννοείς αλλά εμείς όχι -- επομένως είναι πρακτικά αδύνατον να σε βοηθήσουμε αν δε γίνεις πιο συγκεκριμένη.

 

Εννοείς πως το πρόγραμμα δεν κάνει compile? Αν ναι, ποιά είναι τα μηνύματα λάθους του compiler? Ποιές ακριβώς είναι οι γραμμές στους αριθμούς των οποίων αυτά αναφέρονται;

 

Αν το πρόγραμμα κάνει μεν compile αλλά κρασάρει ή δεν παράγει το επιθυμητό αποτέλεσμα: σε ποιό ακριβώς σημείο γίνεται αυτό; Τι εισόδους δίνεις μέχρι εκείνο το σημείο; Αν παίρνεις λανθασμένη έξοδο, ποιά είναι η έξοδος που περίμενες να πάρεις;

 

Δίνοντας όλες αυτές τις πληροφορίες απο πριν διευκολύνεις εμάς και αυξάνεις κατά πολύ τις πιθανότητες να πάρεις μια καλή απάντηση σε σύντομο χρονικό διάστημα.

 

Θα σου πρότεινα κάποια στιγμή αν θέλεις να διαβάσεις αυτή τη σελίδα η/και την περίληψή της, που αναπτύσσουν περισσότερο και με γενικότερους όρους αυτά που είπα παραπάνω. Η καλή ερώτηση θα πάρει και καλή απάντηση.

Δημοσ.

Σε μια γρήγορη ματιά που της έριξα:

 

1) Χρησιμοποιείς τη συνάρτηση strlen() χωρίς να έχεις εισάγει την βιβλιοθήκη string.h

 

2)

>void reverse (char s[]){
char *t;
length =strlen(s);

for(i=0; i=length-1; i++)
*(t-1)=*(s+length-1-i);
while(*s++=*t++);

}

 

η for χρησιμοποείται ως:

 

>for (arxikopoihsh; sunthiki ;bhma){

entoles;
}

 

η συνθήκη είναι μια λογική πράξη εσύ έχεις βάλει να κάνει μια εκχώρηση, ή θα βάλεις i == length -1 ή i < length.

Το while από κάτω πραγματικά δε καταλαβαίνω τί κάνει :P

 

το 3ο error μου το βγάζει εδώ:

 

>void cluster(char s[]){
int length;
char temp;

while(s[length]!='\0')
{
length++;
if (s[length]=='b')
{
temp=s[length];
s[length]=s[length+1];
s[length+1]=temp;
}
}

while(s[length]!='\0')
{
length++;
printf("%c\n",s[length]);
}

 

το length μου λεει ότι επισκιάζει global declaration, δοκίμασα να του αλλάξω όνομα, δε βγάζει σφάλμα αλλά δε ξέρω αν υπάρχει λογικό σφάλμα μέσα :P

 

και ένα λογικό σφάλμα που παρατήρησα:

 

> char endchar(char s[])
{
while(s[length]!='\0')
length++;
if (length==0)
return (0);
else
return s[length-1];
}

 

Όσο το s[length] είναι διάφορο του \0??

Τί είναι το length; δε το περνάς στη συνάρτηση, και μετά το αυξάνεις χωρις αρχικοποιήση κιόλας; :S

αρχικοποιήσε το length στο 0 , όταν δημιουργείς μια μεταβλητή στην αρχή πιθανόν να έχει σκουπίδια μέσα.

Δημοσ.

Ένα συμπέρασμα βλέπω εγώ..

 

Εάν θες άμεση λύση στην άσκηση γράψου στο insomnia με γυναικείο όνομα!

 

Αλλιώς θα βγουν διάφοροι περίεργοι να σου λένε να την λύσεις μόνος σου ή να γράψεις πρώτα τον κώδικα και τι λάθη σου βγάζει αλλιώς βοήθεια γιοκ.

 

Με γυναικείο όνομα σε 3 - 4 post έχεις έτοιμη την λύση και ας μην ξέρεις ακόμα και αυτά πιυ λογικά θα έπρεπε να ξέρεις για να φτάσεις στο σημείο στο οποίο ζητάς βοήθεια.

 

 

 

Υ.Γ. Φυσικά εξαιρούνται οι ρομαντικοί 30άρηδες (ή και 40 παρά κάτι :D ) που ακόμα και τώρα λένε τα ίδια :P

Δημοσ.

Ένα συμπέρασμα βλέπω εγώ..

 

Εάν θες άμεση λύση στην άσκηση γράψου στο insomnia με γυναικείο όνομα!

 

Αλλιώς θα βγουν διάφοροι περίεργοι να σου λένε να την λύσεις μόνος σου ή να γράψεις πρώτα τον κώδικα και τι λάθη σου βγάζει αλλιώς βοήθεια γιοκ.

 

Με γυναικείο όνομα σε 3 - 4 post έχεις έτοιμη την λύση και ας μην ξέρεις ότι πρέπει να αρχικοποιείς μεταβλητές πριν τους κάνεις ++ ή ό,τι άλλο επισύμανε η aleksoula.

 

 

 

Υ.Γ. Φυσικά εξαιρούνται οι ρομαντικοί 30άρηδες (ή και 40 παρά κάτι :D ) που ακόμα και τώρα λένε τα ίδια :P

Χαχαχα +1, έχεις απόλυτο δίκιο.
Δημοσ.

Όσο το s[length] είναι διάφορο του \0??

Τί είναι το length; δε το περνάς στη συνάρτηση, και μετά το αυξάνεις χωρις αρχικοποιήση κιόλας; :S

αρχικοποιήσε το length στο 0 , όταν δημιουργείς μια μεταβλητή στην αρχή πιθανόν να έχει σκουπίδια μέσα.

 

 

Το length είναι μια global μεταβλητή. Δες τον αρχικό κώδικα. Οπότε μία χαρά μπορεί να το χρησιμοποιήσει μέσα στην συνάρτησή της.

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

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...