eMatematikas Prisijunk Forumas Egzaminų užduotys ONLINE testai

Vienmačių masyvų uždaviniai, с++. 12 klasė.


1 uždavinio sprendimas:

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

ifstream readFile("Duomenys.txt");
ofstream writeFile("Rezultatai.txt");

void closeFiles();

int n; // seimu skaicius

int main() {

    readFile >> n;

    int s[n]; // suaugusiuju skaicius
    double sk[n]; // bileto kaina suaugusiems

    int v[n]; // vaiku skaicius
    double vk[n]; // bileto kaina vaikams

    int nariai[n]; // kiek seimoje nariu ruosiasi keliauti
    double kk[n]; // keliones islaidos

    for(int i = 0; i < n; i++) {
        readFile >> s[i] >> v[i] >> sk[i] >> vk[i];
    }

    for(int i = 0; i < n; i++) {
        nariai[i] = s[i] + v[i];
        kk[i] = (s[i] * sk[i]) + (v[i] * vk[i]);
    }

    for(int i = 0; i < n; i++) {
        writeFile << fixed << setprecision(2) << nariai[i] << " " << kk[i] << endl;
    }

    closeFiles();

    return 0;
}

void closeFiles() {
    readFile.close();
    writeFile.close();
}


Neišėjo padaryti:
• sukurkite pradinių duomenų skaitymo funkciją void;
• sukurkite rezultatų rašymo į failą funkciją void.
Nes reikėjo kintamuosius deklaruoti globaliai, kad funkcija galėtų juos panaudoti, o tada negalėjau priskirti masyvo elementų skaičiaus.

Pamėginsiu pažiūrėti.

pakeista prieš 5 m

Na va mano variantas:
#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

const int max_n=100;
int n; // seimu skaicius
int s[max_n]; // suaugusiuju skaicius
    double sk[max_n]; // bileto kaina suaugusiems

    int v[max_n]; // vaiku skaicius
    double vk[max_n]; // bileto kaina vaikams

    int nariai[max_n]; // kiek seimoje nariu ruosiasi keliauti
    double kk[max_n]; // keliones islaidos

void readFile_();
void writeFile_();

int main() {

    readFile_();
   
    for(int i = 0; i < n; i++) {
        nariai[i] = s[i] + v[i];
        kk[i] = (s[i] * sk[i]) + (v[i] * vk[i]);
    }
   
writeFile_();

    return 0;
}

void readFile_()
{
ifstream readFile("Duomenys.txt");
readFile >> n;

    for(int i = 0; i < n; i++) {
        readFile >> s[i] >> v[i] >> sk[i] >> vk[i];
    }
    readFile.close();
}

void writeFile_()
{
ofstream writeFile("Rezultatai.txt");
for(int i = 0; i < n; i++) {
        writeFile << fixed << setprecision(2) << nariai[i] << " " << kk[i] << endl;
    }

    writeFile.close();
}

Šiaip uždaviniuose būna nurodyti tam tikrų kintamųjų įverčių intervalai, šiuo atveju pasirinkau pats, kad didžiausias n gali būti 100.

pakeista prieš 5 m

Supratau, per konstantą (const int max_n=100;), šiaip uždavinio sąlygose būna parašyta: (n < 30) pavyzdžiui.

O kaip tą ketvirtąjį skaičių apskaičiuoti (antrajame uždavinyje) vandens kiekį gramais?

Tai vandens kiekis lygus iš 100 gramų atimti angliavandenių, baltymų ir riebalų kiekių sumą.

2 užduotis:

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

ifstream readFile("Duomenys.txt");
ofstream writeFile("Rezultatai.txt");

void closeFiles();
void readtheFile();
void writetheFile();
void calc();

const int max_n = 100;

int ak;
int bk;
int rk;

int n;

double a[max_n];
double b[max_n];
double r[max_n];

double darzA[max_n];
double darzB[max_n];
double darzR[max_n];
double darzV[max_n];

int main() {

    readtheFile();
    calc();
    writetheFile();
    closeFiles();

    return 0;
}

void calc() {
    for(int i = 0; i < n; i++) {
        readFile >> a[i] >> b[i] >> r[i];
        darzA[i] = a[i] / ak;
        darzB[i] = b[i] / bk;
        darzR[i] = r[i] / rk;
        darzV[i] = 100 - darzA[i] - darzB[i] - darzR[i];
    }
}

void readtheFile() {
    readFile >> ak >> bk >> rk >> n;

    for(int i = 0; i < n; i++) {
        readFile >> a[i] >> b[i] >> r[i];
    }
}

void writetheFile() {
    for(int i = 0; i < n; i++) {
        writeFile << fixed << setprecision(1) << darzA[i] << " " << darzB[i] << " " << darzR[i] << " " << darzV[i] << endl;
    }
}

void closeFiles() {
    readFile.close();
    writeFile.close();
}

Jau šiandien nebepažiūrėsiu. Ryt prisėsiu, jei turėsiu laiko, bet kaip supratau, viskas gavosi.

Ar 3 užduočiai nereikia masyvo rikiavimo? Nes jei reikia, tai nesimokiau dar.

Galima manau apsieiti.

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »