madas Δημοσ. 31 Ιανουαρίου 2011 Δημοσ. 31 Ιανουαρίου 2011 προσπαθω να φτιαξω ενα προγραμμα που θα μετατρεπει αριθμους σε κωδικα morse και αντιστροφα αλλα εχω κολλησει σε ενα σημειο. παρακατω παραθετω ενα σημειο του κωδικα για να μου λυσεε την απορια μου. > struct morse_code { int number; string ms; }; morse_code a0, a1, a2, a3, a4, a5, a6, a7, a8, a9; a0.number = 0; a1.number = 1; a2.number = 2; a3.number = 3; a4.number = 4; a5.number = 5; a6.number = 6; a7.number = 7; a8.number = 8; a9.number = 9; a0.ms = "-----"; a1.ms = ".----"; a2.ms = "..---"; a3.ms = "...--"; a4.ms = "....-"; a5.ms = "....."; a6.ms = "-...."; a7.ms = "--..."; a8.ms = "---.."; a9.ms = "----."; αυτο που θελω να κανω ειναι να βαζει ο χρηστης εναν αριθμο και να τον μετρατρεπει. δλδ >cout << "Dwse arithmo: "; cin >> num;//το num το εχω δηλωσει παραπανω ως num[100] και μετα με ενα loop θα συκγρινω ενα ενα τα κελια του num με τα a0.number, a1.number .... αυτο που θελω να κανω και δεν ξερω ειναι π.χ. >for (int i=0;i<=9;i++) ai.number//το προβλημα ειναι οτι δεν ξερω πως να γραψω το i μεσα στο loop, ετσι ωστε σε καθε επαναληψη να αλλαζει τιμη ελπιζω να βγαλατε ακρη........
godlike Δημοσ. 31 Ιανουαρίου 2011 Δημοσ. 31 Ιανουαρίου 2011 Πρέπει το ai να είναι πίνακας, αναγκαστικά. for (int i=0;i<=9;i++) a.number
MitsakosGR Δημοσ. 31 Ιανουαρίου 2011 Δημοσ. 31 Ιανουαρίου 2011 >for (int i=0;i<=9;i++) ai.number//το προβλημα ειναι οτι δεν ξερω πως να γραψω το i μεσα στο loop, ετσι ωστε σε καθε επαναληψη να αλλαζει τιμη ελπιζω να βγαλατε ακρη........ Στο For-Loop η τιμή του i αλλάζει μόνη της τιμή σε κάθε επανάληψη. Το i++ που έχεις γράψει είναι ο τρόπος αλλαγής του i σε κάθε επανάληψη. To format γενικά του for είναι το εξής: >for (initialization; condition; increase) Έτσι όταν γράφεις for (int i=0;i<=9;i++) στην ουσία ορίζεις την μεταβλητή i και θέτεις την τιμή της ίση με το 0, ορίζεις ότι ο βρόγχος θα επαναλαμβάνεται όσο το i είναι μικρότερο ίσο του 9 και τέλος ότι σε κάθε επανάληψη το i αυξάνει την τιμή του κατά ένα. Άρα αν μέσα στο for-loop γράψεις a.number αυτό θα περνάει ένα ένα τα στοιχεία του πίνακα a.
madas Δημοσ. 31 Ιανουαρίου 2011 Μέλος Δημοσ. 31 Ιανουαρίου 2011 Πρέπει το ai να είναι πίνακας, αναγκαστικά. for (int i=0;i<=9;i++) a.number μου δουλεψε!!! σ ευχαριστω πολυ
Directx Δημοσ. 31 Ιανουαρίου 2011 Δημοσ. 31 Ιανουαρίου 2011 Για την ιστορία θα μπορούσε να γραφθεί και δίχως την χρήση πίνακα ή λεξικού (map) αν εκμεταλλευτούμε το γεγονός ότι η κωδικοποίηση Μορς μετά το 5 είναι ουσιαστικά αντανάκλαση του 1 ως 4 με αντικατάσταση της τελείας (dot) με παύλα (dash), ως: > // // Morse Digit Encoder without array or map. // (c) dx. // #include <iostream> #include <string> using namespace std; string _retmcode(const int); int main(void) { // Convert each digit to it's Morse code equivalent. for(int N = 0; N < 10; N++) cout <<"#"<<N<<" --> "<<_retmcode(N)<<endl; // End of program. cout <<endl<<"Press Enter to exit.."; cin.get(); return 0; } string _retmcode(const int Digit) { /* * Morse code is reflective after 5. Notice from 6 and on, '.' swaps * with '-' while the count of '-' & '.' remains the same ;-) */ string Base = Digit < 6 ? "-----": "....."; return Digit ? Base.replace(0, Digit < 6 ? Digit: (Digit + 1) % 6, Digit < 6 ? ".....": "-----", 0, Digit < 6 ? Digit: (Digit + 1) % 6): Base; } ΕΞΟΔΟΣ: > #0 --> ----- #1 --> .---- #2 --> ..--- #3 --> ...-- #4 --> ....- #5 --> ..... #6 --> -.... #7 --> --... #8 --> ---.. #9 --> ----. Press Enter to exit.. Το πρόγραμμα έχει δοκιμασθεί σε C++ Builder 2009 και μπορεί να περιέχει bugs ή άλλες αβλεψίες.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.