MauriDalia Δημοσ. 24 Απριλίου 2012 Δημοσ. 24 Απριλίου 2012 Γεια σας, προσπαθώ να διαβάζω από την γραμμή εντολών, μια είσοδο που δίνει ο χρήστης της μορφής για παράδειγμα: def abc xyz Δηλαδή να δίνει ένα string να πατάει ENTER και να δίνει όσα θέλει. Στην συνέχεια θα παίρνει ένα ένα αυτά τα strings και θα τα επεξεργάζεται με κάποιες συναρτήσεις(sort, reverse κτλ). Αυτό που ξεκίνησα να κάνω αρχικά είναι να διαβάζω την είσοδο μου στην σωστή μορφή. Του λέω πως όταν δείς τον χαρακτήρα κενό τότε άλλαξε γραμμή. >#include <iostream> using std::cout; using std::cin; using std::endl; int main() { char c; char buffer[100]; cout<<"Give your input: "<<endl; c=read(buffer,100); for(int i=0;i<100;i++) { if(buffer[i]!=" ") //<------------------ ΕΔΩ ΜΟΥ ΒΓΑΖΕΙ ΠΩς ΔΕΝ ΓΙΝΕΤΑΙ Η ΣΥΓΚΡΙΣΗ { cout<<endl; cout.write(buffer[i]); } else cout.write(buffer[i]); } cout<<endl; system("pause"); return 0; } καμιά ιδέα τι μπορεί να φταίει? Ευχαριστώ
MauriDalia Δημοσ. 24 Απριλίου 2012 Μέλος Δημοσ. 24 Απριλίου 2012 Ωραία αυτό το κατάλαβα μετά πως ήταν λάθος με τα " " και το άλλαξα. Επίσης άλλαξα το πρόγραμμα ως εξής, χρησιμοποιώντας την getline >#include <iostream> using std::cout; using std::cin; using std::endl; int main() { char buffer[100]; char *p=buffer; cout<<"Give your input: "<<endl; cin.getline(buffer,100); int i=0; for(int i=0;i<100;i++) { cout<<*(p+i); if(*p != ' ') cout<<endl; } system("pause"); return 0; } όμως δυστυχώς πάλι δεν μπορώ να καταλάβω πως θα πάρω την έξοδο όπως θέλω δηλαδή στην μορφή abc chdhd Ζητάει απ τον χρήστη να δώσει την είσοδο πχ αωσ ξαξαξα και σαν αποτέλεσμα πρέπει να πάρω αωσ ξαξαξα Μήπως μπορεί να γίνει ευκολότερα χρησιμοποιώντας δισδιάστατο array ? η κάποια άλλη συνάρτηση πέρα απο την getline?
AMIOX? Δημοσ. 24 Απριλίου 2012 Δημοσ. 24 Απριλίου 2012 1.Υπάρχει λόγος οου τον buffer σε δεύτερο δείκτη? 2.Η for πρέπει να πάει το strlen(p) οχι μέχρι το 100. 3.Αν θες σε κάθε λέξη να αλλάζει γραμμή βάλε αυτο *(p+i)==' ' στην if. 4 Δήλωσε το i μια φορα
migf1 Δημοσ. 24 Απριλίου 2012 Δημοσ. 24 Απριλίου 2012 (επεξεργασμένο) ... Μήπως μπορεί να γίνει ευκολότερα χρησιμοποιώντας δισδιάστατο array ? η κάποια άλλη συνάρτηση πέρα απο την getline? Yeap , θα σε βοηθήσει επίσης μετά να εφαρμόσεις τις συναρτήσεις που θέλεις σε κάθε (διαβασμένο) string ξεχωριστά. Οπότε το buffer σου αντί να είναι πίνακας χαρακτήρων κάνε το να είναι πίνακας από strings (το καθένα από τα οποία θα τα διαβάζεις με την getline() ). Επεξ/σία 24 Απριλίου 2012 από migf1
παπι Δημοσ. 24 Απριλίου 2012 Δημοσ. 24 Απριλίου 2012 Μια λυση ειναι η χρηση iterators πχ >#include <iostream> #include <algorithm> #include <string> #include <iterator> int main() { std::cout << "Dwse tanga kai pata Ctrl + Z gia telos\n"; std::istream_iterator<char> first(std::cin >> std::noskipws); std::istream_iterator<char> end; // EOF ctrl + z std::string buffer(first,end); std::cout << "Edwses:\n"; std::cout<<buffer; return 0; } output >Dwse tanga kai pata Ctrl + Z gia telos Ena dyo tria piga sth kyria hey hop ^Z Edwses: Ena dyo tria piga sth kyria hey hop
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα