Advertisement
MariusPure

paskutinis did/maz

Jun 2nd, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.82 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <fstream>
  4. #include <algorithm>
  5. #include <vector>
  6. #include <string>
  7. using namespace std;
  8.  
  9. int n = 0;
  10.  
  11. struct kalbos {
  12.  
  13.     string p;
  14.     int sen = 0;
  15.     int dab = 0;
  16.     double skirtumas = 0;
  17.  
  18.     int visoMaz = 0;
  19.     int maz = 0;
  20.     int mazX = 0;
  21.     int mazKiek = 0;
  22.  
  23.     int visoDid = 0;
  24.     int did = 0;
  25.     int didX = 0;
  26.     int didKiek = 0;
  27. };
  28. kalbos m[100];
  29.  
  30. void skaitymas(int &n, kalbos m[]);
  31. void skaiciavimas(int n, kalbos m[]);
  32. void skaiciavimas2(int n, kalbos m[]);
  33. void spausdinimas(int n, kalbos m[]);
  34.  
  35. int main()
  36. {
  37.     skaitymas(n, m);
  38.     skaiciavimas(n, m);
  39.     skaiciavimas2(n, m);
  40.     spausdinimas(n, m);
  41. }
  42.  
  43. void skaitymas(int &n, kalbos m[])
  44. {
  45.     char x[25];
  46.  
  47.     ifstream d("duom.txt");
  48.  
  49.     d >> n;
  50.     d.ignore();
  51.  
  52.     for (int i = 0; i < n; i++)
  53.     {
  54.         d.get(x, 25);
  55.         m[i].p = x;
  56.  
  57.         d >> m[i].dab >> m[i].sen;
  58.         d.ignore();
  59.  
  60.     }
  61.     d.ignore();
  62.     d.close();
  63. }
  64. void skaiciavimas(int n, kalbos m[])
  65. {
  66.     for (int i = 0; i < n; i++)
  67.     {
  68.         m[i].skirtumas = m[i].sen - m[i].dab;
  69.     }
  70. }
  71.  
  72. void skaiciavimas2(int n, kalbos m[])
  73. {
  74.     //Maziausios reiksmes paieska
  75.     m[0].maz = m[0].skirtumas;
  76.     for (int i = 0; i < n; i++)
  77.     {
  78.         if (m[i].skirtumas < m[0].maz)
  79.         {
  80.             m[0].maz = m[i].skirtumas;
  81.             m[0].mazX = i; //Susieskojimas artimiausios arba vieninetles reiksmes
  82.         }
  83.     }
  84.     int atZ[22];
  85.     for(int i = 0; i < n; i++)
  86.     {
  87.         if (m[0].maz == m[i].skirtumas && i != m[0].mazX)
  88.         {
  89.             m[0].mazKiek++;
  90.         }
  91.     }
  92.     int k = 1;
  93.     for (int i = 0; i < n; i++)
  94.     {
  95.         if (m[0].maz == m[i].skirtumas && i != m[0].mazX)
  96.         {
  97.             atZ[k] = i;
  98.             k++;
  99.         }
  100.     }
  101.     m[0].visoMaz = m[0].mazX;
  102.     if (m[0].mazKiek != 0)
  103.     {
  104.         for (int i = 1; i <= m[0].mazKiek; i++)
  105.         {
  106.             m[i].visoMaz = atZ[i];
  107.         }
  108.     }
  109.     //Didziausios reiksmes paieska
  110.     //m[0].did = m[0].skirtumas;
  111.     for (int i = 0; i < n; i++)
  112.     {
  113.         if (m[0].did < m[i].skirtumas)
  114.         {
  115.             m[0].did = m[i].skirtumas;
  116.             m[0].didX = i; //Susiradimas artimiausios arba vieninetles didziausios reiksmes
  117.         }
  118.     }
  119.  
  120.     int didZ[22];
  121.     for (int i = 0; i < n; i++)
  122.     {
  123.         if (m[0].did == m[i].skirtumas && i != m[0].didX)
  124.         {
  125.             m[0].didKiek++; // Kiek dar tokiu paciu didziausiu reiksmiu yra
  126.         }
  127.     }
  128.     int xx = 1;
  129.     for (int i = 0; i < n; i++)
  130.     {
  131.         if (m[0].did == m[i].skirtumas && i != m[0].didX)
  132.         {
  133.             didZ[xx] = i;
  134.             xx++;
  135.         }
  136.     }
  137.     m[0].visoDid = m[0].didX;
  138.     if (m[0].didKiek != 0)
  139.     {
  140.         for (int i = 1; i <= m[0].didKiek; i++)
  141.         {
  142.             m[i].did = didZ[i];
  143.         }
  144.     }
  145.  
  146.  
  147.  
  148.  
  149. }
  150. void spausdinimas(int n, kalbos m[])
  151. {
  152.     ofstream r("rez.txt");
  153.     //Didziausiu reiksmiu spausdinimas
  154.     r << m[0].did << endl;
  155.     for (int i = 0; i < m[0].didKiek + 1; i++)
  156.     {
  157.         r << m[m[i].visoDid].p << endl;
  158.     }
  159.  
  160.     // Maziausios reiksmes spausdinimas
  161.     r << abs(m[0].maz) << endl;
  162.     for (int i = 0; i < m[0].mazKiek+1; i++)
  163.     {
  164.         r << m[ m[i].visoMaz ].p << endl;
  165.     }
  166.  
  167.     r.close();
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement