Συνάρτηση σε C++

Ο τομέας μας. ;)
Απάντηση
Giannisl9
Δημοσιεύσεις: 5
Εγγραφή: Σάβ Νοέμ 26, 2011 12:59 am

Συνάρτηση σε C++

Δημοσίευση από Giannisl9 » Σάβ Νοέμ 26, 2011 1:08 am

Καλησπέρα σε όλους,

πειραματίζομαι με τα strings και προσπαθώ να φτιάξω ένα πρόγραμμα που βρίσκει το μεγαλύτερο σε αξία χαρακτήρα ενώς string. Λέγοντας μεγαλύτερο εννοώ ότι πχ το 'Α' είναι μεγαλύτερο σε αξία από το 'B'...
Αυτός είναι ο κώδικας στον οποίο κατέληξα:

Κώδικας: Επιλογή όλων

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

char grt = 'W';
string a;

void greater (){
    char great = 'W';
    for( int i=0; i < a.length()-1; i++){
        if( a[i] < great )great = a[i];
    }
    grt = great;
}



int main()
{
    ifstream in("file.in");
    ofstream out("file.out");
     
    in >>  a;
    greater();
    out << grt;
    return 0;
}
Στη γραμμή 25 ωστόσο που καλώ τη συνάρτηση ( greater(); ) μου βγάζει error...

Έχετε ιδέα τι μπορεί να φταίει;

Ευχαριστώ,
Giannisl9

Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 298
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Συνάρτηση σε C++

Δημοσίευση από Κηπουρίδης » Σάβ Νοέμ 26, 2011 2:34 am

Θα μπερδεύεται με κάτι τέτοιο : http://www.cplusplus.com/reference/std/ ... l/greater/ γιατί όταν δοκίμασα αντί για greater να ονομάσω την συνάρτησή σου Greater, το πρόγραμμα δούλεψε.
Όσο για τον κώδικα, γιατί χρησιμοποιείς μια δεύτερη μεταβλητή great και δεν τα κάνεις όλα με την grt; Απλά θα την αρχικοποιείς κάθε φορά μέσα στην συνάρτηση.
Επίσης, αντί να βάλεις μια global μεταβλητή, γιατί δεν βάζεις την συνάρτησή σου να επιστρέφει την τιμή που βρήκε;
Άλλο ένα, η μικρότερη τιμή ( δεδομένου ότι ο χρήστης δίνει μόνο κεφαλαίους χαρακτήρες ( ούτε κενά, ούτε τίποτα, γιατί αλλιώς θα προσπαθήσει να εμφανίσει αυτά ) ) θα έπρεπε να είναι Z, όχι W.
Τέλος, στην for πρέπει να κάνεις i<a.length() ή i<=a.length()-1, γιατί με αυτό που κάνεις χάνεις τον τελευταίο χαρακτήρα.
Μαλακία το bug, γκαντέμης ήσουν. Καλή συνέχεια.
Εικόνα

Άβαταρ μέλους
compileGuy
Δημοσιεύσεις: 218
Εγγραφή: Δευ Ιαν 19, 2009 5:39 pm

Re: Συνάρτηση σε C++

Δημοσίευση από compileGuy » Σάβ Νοέμ 26, 2011 12:56 pm

Κηπουρίδης έγραψε:Θα μπερδεύεται με κάτι τέτοιο : http://www.cplusplus.com/reference/std/ ... l/greater/ γιατί όταν δοκίμασα αντί για greater να ονομάσω την συνάρτησή σου Greater, το πρόγραμμα δούλεψε.
Όσο για τον κώδικα, γιατί χρησιμοποιείς μια δεύτερη μεταβλητή great και δεν τα κάνεις όλα με την grt; Απλά θα την αρχικοποιείς κάθε φορά μέσα στην συνάρτηση.
Επίσης, αντί να βάλεις μια global μεταβλητή, γιατί δεν βάζεις την συνάρτησή σου να επιστρέφει την τιμή που βρήκε;
Άλλο ένα, η μικρότερη τιμή ( δεδομένου ότι ο χρήστης δίνει μόνο κεφαλαίους χαρακτήρες ( ούτε κενά, ούτε τίποτα, γιατί αλλιώς θα προσπαθήσει να εμφανίσει αυτά ) ) θα έπρεπε να είναι Z, όχι W.
Τέλος, στην for πρέπει να κάνεις i<a.length() ή i<=a.length()-1, γιατί με αυτό που κάνεις χάνεις τον τελευταίο χαρακτήρα.
Μαλακία το bug, γκαντέμης ήσουν. Καλή συνέχεια.
Όλα τα βρήκες πια! Δεν έμεινε κάτι αλλο :P

@Giannisl9: Να θυμάσαι πάντα πως οι πίνακες/strings ξεκινάνε την αρίθμηση των στοιχείων από το 0 .

Giannisl9
Δημοσιεύσεις: 5
Εγγραφή: Σάβ Νοέμ 26, 2011 12:59 am

Re: Συνάρτηση σε C++

Δημοσίευση από Giannisl9 » Σάβ Νοέμ 26, 2011 12:58 pm

Καλησπέρα,

ναι δούλεψε... Σε ευχαριστώ! Ο λόγος που χρησιμοποίησα global μεταβλητή ήταν γιατί ήθελα να αποφύγω να επιστρέφει κάτι η συνάρτησή μου. Η απορία μου είναι αν μία συνάρτηση μπορεί να επιστρέψει όλους τους τύπους δεδομένων, δηλαδή να μη χρειάζεται κάποια τροποποίηση αυτό που δίνει... Παραδείγματος χάριν σε μία συνάρτηση μπορώ να επιστρέψω string και αν ναι πώς ορίζεται;
Βέβαια σε αυτά δεν χρειάζεται να μου απαντήσετε! Θα πειραματιστώ και θα τα βρω μόνος μου!

Τα λέμε,
Giannisl9

Άβαταρ μέλους
compileGuy
Δημοσιεύσεις: 218
Εγγραφή: Δευ Ιαν 19, 2009 5:39 pm

Re: Συνάρτηση σε C++

Δημοσίευση από compileGuy » Σάβ Νοέμ 26, 2011 1:03 pm

Giannisl9 έγραψε:Καλησπέρα,

ναι δούλεψε... Σε ευχαριστώ! Ο λόγος που χρησιμοποίησα global μεταβλητή ήταν γιατί ήθελα να αποφύγω να επιστρέφει κάτι η συνάρτησή μου. Η απορία μου είναι αν μία συνάρτηση μπορεί να επιστρέψει όλους τους τύπους δεδομένων, δηλαδή να μη χρειάζεται κάποια τροποποίηση αυτό που δίνει... Παραδείγματος χάριν σε μία συνάρτηση μπορώ να επιστρέψω string και αν ναι πώς ορίζεται;
Βέβαια σε αυτά δεν χρειάζεται να μου απαντήσετε! Θα πειραματιστώ και θα τα βρω μόνος μου!

Τα λέμε,
Giannisl9
Όποτε και άμα θες το ανοίγεις ;)
Spoiler: show
// Παράδειγμα με επιστροφή string //
...
#include<string>
...

string example(){
string str = "ABCDEF";
.....
return str;
}

....

Απάντηση