Όμιλος Αλγοριθμικής > Μαθήματα 2017-2018

Η δύναμη της επανάληψης

(1/1)

evry:
Το παρακάτω πρόγραμμα δημιουργεί ένα αρχείο 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.
Στη συνέχεια να εμφανίζει ποιος εμφανίζεται τις περισσότερες φορές.

Πλοήγηση

[0] Λίστα μηνυμάτων

Μετάβαση στην πλήρη έκδοση