Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <climits>
- #include <Windows.h>
- #include <cmath>
- #include <fstream>
- using namespace std;
- int na10(string &liczba, int podstawa)
- {
- int len = liczba.length();
- int wynik = 0;
- int potega = 1;
- int znak = 1;
- int i = 0;
- if (liczba[0] == '-')
- {
- znak = -1;
- i = 1;
- }
- for (int j = len - 1; j >= i; j--)
- {
- int x = liczba[j] - '0';
- wynik = wynik + (x * potega);
- potega = potega * podstawa;
- }
- return znak * wynik;
- }
- string naSystem(int liczba, int podstawa)
- {
- string wynik = "";
- string wzorzec = "012345678";
- int znak = 1;
- if (liczba < 0)
- {
- znak = -1;
- liczba = -liczba;
- }
- while (liczba > 0)
- {
- wynik = wzorzec[liczba % podstawa] + wynik;
- liczba = liczba / podstawa;
- }
- if (znak == -1) wynik = '-' + wynik;
- return wynik;
- }
- struct Pomiar
- {
- string czas;
- string temperatura;
- };
- int main()
- {
- fstream dane1;
- fstream dane2;
- fstream dane3;
- dane1.open("dane_systemy1.txt", ios::in);
- dane2.open("dane_systemy2.txt", ios::in);
- dane3.open("dane_systemy3.txt", ios::in);
- const int N = 1095;
- Pomiar *S1 = new Pomiar[N];
- Pomiar *S2 = new Pomiar[N];
- Pomiar *S3 = new Pomiar[N];
- for (int i = 0; i < N; i++)
- {
- dane1 >> S1[i].czas >> S1[i].temperatura;
- dane2 >> S2[i].czas >> S2[i].temperatura;
- dane3 >> S3[i].czas >> S3[i].temperatura;
- }
- dane1.close();
- dane2.close();
- dane3.close();
- fstream wynik;
- string w = "wyniki_systemy.txt";
- // WCZYTANIE - KONIEC
- // 58.1 - zmienne
- int min1, min2, min3;
- min1 = min2 = min3 = INT_MAX;
- // 58.2 - zmienne
- int stan = 12;
- int blad = 0;
- // 58.3 - zmienne
- int max1, max2, max3;
- int rekordow = 0;
- max1 = max2 = max3 = INT_MIN;
- for (int i = 0; i < N; i++)
- {
- // 58.1
- int t1 = na10(S1[i].temperatura, 2);
- int t2 = na10(S2[i].temperatura, 4);
- int t3 = na10(S3[i].temperatura, 8);
- if (t1 < min1) min1 = t1;
- if (t2 < min2) min2 = t2;
- if (t3 < min3) min3 = t3;
- // 58.2
- int czas1 = na10(S1[i].czas, 2);
- int czas2 = na10(S2[i].czas, 4);
- int czas3 = na10(S3[i].czas, 8);
- if (czas1 != stan && czas2 != stan && czas3 != stan)
- blad++;
- stan += 24;
- // 58.3
- bool rekord = false;
- if (t1 > max1)
- {
- max1 = t1;
- rekord = true;
- }
- if (t2 > max2)
- {
- max2 = t2;
- rekord = true;
- }
- if (t3 > max3)
- {
- max3 = t3;
- rekord = true;
- }
- if (rekord) rekordow++;
- }
- wynik.open(w.c_str(), ios::out);
- wynik << 58.1 << endl;
- wynik << "min S1: " << naSystem(min1, 2) << endl;
- wynik << "min S2: " << naSystem(min2, 2) << endl;
- wynik << "min S3: " << naSystem(min3, 2) << endl;
- wynik << 58.2 << endl;
- wynik << "blednych dni: " << blad << endl;
- wynik << 58.3 << endl;
- wynik << "dni rekordowych: " << rekordow << endl;
- // 58.4 tylko dla S1
- int maxskok = INT_MIN;
- for(int i = 0; i < N; i++)
- for (int j = i + 1; j < N; j++)
- {
- double a = na10(S1[i].temperatura, 2) - na10(S1[j].temperatura, 2);;
- double ry = a * a;
- // Zaokraglenie w gore
- double skok = ceil(ry / abs(i - j));
- if (skok > maxskok)
- maxskok = skok;
- }
- wynik << 58.4 << endl;
- wynik << "rekordowy skok: " << maxskok;
- delete[] S1;
- delete[] S2;
- delete[] S3;
- wynik.close();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement