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.
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.
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.