Αποστολέας Θέμα: Η δύναμη της επανάληψης  (Αναγνώστηκε 2220 φορές)

evry

  • Γενικός Διαχειριστής
  • Hacker
  • *****
  • Μηνύματα: 2182
  • Karma: +0/-0
  • To iterate is human, to recurse divine
    • Προφίλ
Η δύναμη της επανάληψης
« στις: Νοέμβριος 20, 2017, 08:23:23 μμ »
Το παρακάτω πρόγραμμα δημιουργεί ένα αρχείο test.out και το γεμίζει με τα τετράγωνα όλων των αριθμών από το 1 έως και το 1000.

Κώδικας: cpp [Επιλογή]

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ofstream fout("test.out");

    for (int i=0; i<1000; i++) {
        fout << i*i << endl;
    }
    fout.close();
    return 0;
}


Το παραπάνω αρχείο test.out έχει αποθηκευθεί στον ίδιο φάκελο με το main.cpp που είναι το πρόγραμμά σας.
Για να το ανοίξετε προτείνω τον editor notepad++ που μπορείτε να κατεβάσετε από τον παρακάτω σύνδεσμο:
https://notepad-plus-plus.org/download/v7.2.2.html

Στη συνέχεια το παρακάτω πρόγραμμα διαβάζει το παραπάνω αρχείο και εμφανίζει τους αριθμούς
Κώδικας: cpp [Επιλογή]

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream fin("test.out");
    int value;
    for (int i=0; i<1000; i++) {
        fin >> value;
        cout << value << "  ";
    }
    fin.close();
    return 0;
}


Το αρχείο που πριν ήταν έξοδος τώρα γίνεται είσοδος αφού διαβάζουμε από αυτό

Παρακάτω δίνω ένα πρόγραμμα το οποίο διαβάζει από το αρχείο input.in έναν αριθμό Ν ο οποίος είναι το πλήθος των αριθμών που ακολουθούν και υπολογίζει και εμφανίζει τον μεγαλύτερο από αυτούς.

Κώδικας: cpp [Επιλογή]

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream fin("input.in");
    int value, maximum = -1;
    for (int i=0; i<1000; i++) {
        fin >> value;
        if (value > maximum) {
            maximum = value;
        }
    }
    cout << "maximum = " << maximum << endl;
    fin.close();
    return 0;
}


Στη συνέχεια δίνω ένα πρόγραμμα το οποίο διαβάζει από το αρχείο αριθμούς και στη συνέχεια εμφανίζει πόσα μηδενικά (0), πόσους άσσους (1), πόσα δύο (2) και πόσα τρία (3) εμφανίζονται στο αρχείο.
Το αρχείο που θα φτιάξετε για αυτό το πρόγραμμα θα πρέπει να έχει στην πρώτη γραμμή έναν αριθμό π.χ. 10 ο οποίος είναι το πλήθος των αριθμών που ακολουθούν και στη συνέχεια τους αριθμούς. Για παράδειγμα ένα αρχείο input.in θα μπορούσε να είναι όπως το παρακάτω:

Αρχείο input.in
Κώδικας: [Επιλογή]
20
1 1 1 3 3 1 2 2 1 2 3 1 2 3 5 5 6 7 1 1
To παραπάνω αρχείο περιέχει στην πρώτη γραμμή τον αριθμό 20 ο οποίος μας ενημερώνει ότι ακολουθούν 20 αριθμοί και στη συνέχεια τους 20 αυτούς αριθμούς.

Το παρακάτω πρόγραμμα διαβάσει το αρχείο input.in και εμφανίζει τη συχνότητα των αριθμών 1 , 2 και 3
Κώδικας: cpp [Επιλογή]

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream fin("input.in");
    int value, counter[4] = {0}, N;
    fin >> N;                             // πρώτα διαβάζω το πλήθος των αριθμών
    for (int i=0; i<N; i++) {
        fin >> value;
        if (value == 0) {
            counter[0]++;        // αυξάνω τον μετρητή counter[0] του 0
        }
        if (value == 1) {
            counter[1]++;        // αυξάνω τον μετρητή counter[1] του 1
        }
        if (value == 2) {
            counter[2]++;        // αυξάνω τον μετρητή counter[2] του 2
        }
        if (value == 3) {
            counter[3]++;        // αυξάνω τον μετρητή counter[3] του 3
        }

    }
    cout << "frequency of 0 is " << counter[0] << endl;
    cout << "frequency of 1 is " << counter[1] << endl;
    cout << "frequency of 2 is " << counter[2] << endl;
    cout << "frequency of 3 is " << counter[3] << endl;

    fin.close();
    return 0;
}

Επεξήγηση
Όταν δηλώνουμε τη μεταβλητή counter[4], στην ουσία δηλώνουμε τέσσερις μεταβλητές, counter[0], counter[1], counter[2], counter[3]. Κάθε μια από αυτές τις μεταβλητές μετράει πόσες φορές εμφανίζεται ο αντίστοιχος αριθμός. Για παράδειγμα ο counter[0] υπολογίζει πόσες φορές εμφανίζεται το 0, ο counter[1] το 1 κ.ο.κ.


Άσκηση
Να τροποποιήσετε το παραπάνω πρόγραμμα έτσι ώστε να υπολογίζει και να εμφανίζει πόσες φορές εμφανίζεται στο αρχείο κάθε αριθμός από το 1 έως και το 10.
Στη συνέχεια να εμφανίζει ποιος εμφανίζεται τις περισσότερες φορές.
Learn to solve every problem that has been solved