Simbolių eilutės

1 PAVYZDYS

Viešbučio gyventojų sąrašo failo gyven.txt pirmoje eilutėje yra gyventojų skaičius n (1 < n <= 100). Kitose eilutėse, pradedant antrąja, surašyti gyventojų vardai (10 simbolių), sumokėta suma už viešbutį, buvimo viešbutyje dienų skaičius.
Parašykite programą, kuri sudarytų gyventojų sąrašą, išrikiuotą mokesčių mažėjimo tvarka, apskaičiuotų vidutinį buvimo viešbutyje dienų skaičių, nustatytų ilgiausiai viešbutyje gyvenantį klientą. Gautus rezultatus programa turi įrašyti į failą gyvrez.txt

Nurodymai

  • Naudokite vienmačius sveikųjų, realiųjų ir simbolių eilučių (string) masyvus.
  • Sukurkite pradinių duomenų skaitymo funkciją void.
  • Sukurkite funkciją void, kuri surikiuotų mokesčius mažėjimo tvarka.
  • Sukurkite funkciją, kuri apskaičiuotų vidutinį buvimo viešbutyje dienų skaičių.
  • Sukurkite funkciją void, kuri nustatytų ilgiausiai viešbutyje gyvenantį klientą.
  • Sukurkite rezultatų rašymo į failą funkciją void.

Pradinių duomenų ir rezultatų pavyzdžiai

Duomenų failo pavyzdys Rezultatų failo pavyzdys
5
Jonas        56.79 2
Petras       459.97 10
Simas       61.78 4
Marytė      186.93 7
Lina          781.47 18
Lina         781.47 18
Petras     459.97 10
Marytė    186.93 7
Simas     61.78 4
Jonas      56.79   2
Vidutiniškai: 8.2 dienos
Ilgiausiai: Lina, 18 dienų

#include <fstream>
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
//———————————————————————————————————————–
void Skaityti(string A[], double B[], int C[], int & n);
void Rikiuoti(string A[], double B[], int C[], int n);
double AritmVid(int X[], int n);
void Did(int C[], string A[], int n, int & max, int & maxv);
void Spausdinti(string A[], double B[], int C[], int n, double vid, int max, int maxv);
//———————————————————————————————————————–
int main()
{
string A[100];
double B[100], vid;
int n, C[100], max, maxv;
Skaityti(A, B, C, n);
Rikiuoti(A, B, C, n);
Spausdinti(A, B, C, n, vid, max, maxv);
return 0;
}
//———————————————————————————————————————-
// Simbolių eilutės skaitomos iš nurodyto failo į masyvą A(n)
void Skaityti(string A[], double B[], int C[], int & n)
{
ifstream F („Duomenys.txt“);
F >> n;
for (int i = 0; i < n; i++)
F >> A[i] >> B[i] >> C[i];
F.close();
}
//———————————————————————————————————————
// Abėcėliškai rikiuoja masyve B(n) laikomas simbolių eilutes
void Rikiuoti(string A[], double B[], int C[], int n)
{
string z;
double x;
int y;
for (int i = 0; i < n – 1; i++)
for (int j = i + 1; j < n; j++)
// Dvi simbolių eilutes palygina ir, jeigu reikia, sukeičia vietomis
if (B[i] < B[j])
{
x = B[i];
B[i] = B[j];
B[j] = x;
y = C[i];
C[i] = C[j];
C[j] = y;
z = A[i];
A[i] = A[j];
A[j] = z;
}
}
//——Vidurkio algoritmas————————————————————————————
double AritmVid(int X[], int n)
{

double y;
int s = 0;
for (int i = 0; i < n; i++)
s = s + X[i];
y = (double) s / n;
return y;
}
//——Did. elem. algoritmas——————————————————————————-
void Did(int C[], string A[], int n, int & max, int & maxv)
{
max = C[0];
maxv = 0;
for (int i = 1; i < n; i++)
if (C[i] > max)
{
max = C[i];
maxv = i;
}
}
// Spausdinimas
void Spausdinti(string A[], double B[], int C[], int n, double vid, int max, int maxv)
{
ofstream R („Rezultatai.txt“);
for (int i = 0; i < n; i++)
R << setw(10) << left << A[i] << B[i] << “ “ << C[i] << endl;
vid = AritmVid(C, n);
R << „Vidutiniškai: “ << fixed << setprecision (1) << vid << “ dienos“ << endl;
Did(C, A, n, max, maxv);
R << „Ilgiausiai: “ << A[maxv] << „, “ << max << “ dienų“ << endl;
R.close();
}

2 PAVYZDYS

Studentų egzaminų sesijos pažymiai surašyti į tekstinį failą stud.txt. Pirmoje failo eilutėje yra studentų skaičius n (3 < n <= 30) ir balas b, reikalingas stipendijai gauti. Kitose eilutėse, pradedant antrąja, surašyti studentų pavardės (12 simbolių) bei gauti pažymiai.
Parašykite programą, kuri apskaičiuotų studentų pažymių vidurkius, rastų didžiausią vidurkį bei jo savininko pavardę, sudarytų sąrašą studentų, gausiančių stipendiją, išrikiuotą vidurkio mažėjimo tvarka. Gautus rezultatus programa turi įrašyti į failą stip.txt.

Nurodymai

  • Naudokite vienmačius sveikųjų, realiųjų ir simbolių eilučių (string) masyvus.
  • Sukurkite pradinių duomenų skaitymo funkciją void.
  • Sukurkite funkciją void, kuri , rastų didžiausią vidurkį bei jo savininko pavardę.
  • Sukurkite funkciją void, kuri išrikiuotų sąrašą studentų vidurkio mažėjimo tvarka.
  • Sukurkite rezultatų rašymo į failą funkciją void.

Pradinių duomenų ir rezultatų pavyzdžiai

Duomenų failo pavyzdys Rezultatų failo pavyzdys
5 9
Garnys       6 8 9 9
Basys        9 9 8 10
Šimas       10 10 10
Kupytė       8 6 9 7
Kurienė      7 10 10 10
Garnys      8.00
Basys       9.00
Šimas       9.75
Kupytė      7.50
Kurienė     9.25
Didžiausias vidurkis:
Šimas       9.75
Stipendiją gaus:
Šimas
Kurienė
Basys     

#include <fstream>
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
//————————————————————————————————————————
void Skaityti(string A[], int p1, int p2, int p3, int p4, int & n, int & b, double Vid[]);
void Did_vieta(double Vid[], int n, double &max, int &maxv);

void Rikiuoti(int m, double Vid[], string A[]);
void Spausdinti(string A[], int n, int b, double Vid[], double max, int maxv);
//————————————————————————————————————————
int main()
{
string A[30];
int n, b, p1, p2, p3, p4, maxv;
double Vid[30], max;
Skaityti(A, p1, p2, p3, p4, n, b, Vid);
Spausdinti(A, n, b, Vid, max, maxv);
return 0;
}
//————————————————————————————————————————-
// Simbolių eilutės skaitomos iš nurodyto failo į masyvą A(n)
void Skaityti(string A[], int p1, int p2, int p3, int p4, int & n, int & b, double Vid[])
{
ifstream F („Duomenys.txt“);
F >> n >> b;
for (int i = 0; i < n; i++)
{
F >> A[i] >> p1 >> p2 >> p3 >> p4;
Vid[i] = (double)(p1 + p2 + p3 + p4) / 4;
}
F.close();
}
//——Did. elem. algoritmas———————————————————————————–
void Did_vieta(double Vid[], int n, double &max, int &maxv)
{
max = Vid[0];
maxv = 0;
for (int i = 1; i < n; i++)
if (Vid[i] > max)
{
max = Vid[i];
maxv = i;
}
}
// Abėcėliškai rikiuoja masyve B(n) laikomas simbolių eilutes
void Rikiuoti(int n, double Vid[], string A[])
{
for (int i = 0; i < n – 1; i++)
for (int j = i + 1; j < n; j++)
if (Vid[i] < Vid[j])
{
string x = A[i];
A[i] = A[j];
A[j] = x;
double y = Vid[i];
Vid[i] = Vid[j];
Vid[j] = y;
}
}
// Spausdinimas
void Spausdinti(string A[], int n, int b, double Vid[], double max, int maxv)
{
ofstream R („Rezultatai.txt“);
for (int i = 0; i < n; i++)
R << setw(12) << left << A[i] << fixed << setprecision(2) << Vid[i] << endl;
R << endl;
Did_vieta(Vid, n, max, maxv);
R << „Didžiausias vidurkis:“ << endl;
R << setw(12) << left << A[maxv] << max << endl;
R << endl;
Rikiuoti(n, Vid, A);
R << „Stipendiją gaus:“ << endl;
for (int i = 0; i < n; i++)
if(Vid[i] >= b)
R << setw(12) << left << A[i] << endl;
R.close();
}