Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MacierzeGeneracja.cpp : Ten plik zawiera funkcję „main”. W nim rozpoczyna się i kończy wykonywanie programu.
- //
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- #include <fstream>
- #include <chrono>
- using namespace std;
- static int wie1,kol1,wie2,kol2;
- float ** macierz1;
- float ** macierz2;
- void wypisanie(float** macierz, int wiersz, int kolumny)
- {
- for (int x = 0; x < wiersz; x++)
- {
- for (int y = 0; y < kolumny; y++)
- {
- cout << ("%f ", macierz[x][y]);
- }
- }
- }
- int main()
- {
- cout << "Mnozenie macierzy - kolumny macierzy 1 musza rownac sie wierszom macierzy 2" << endl;
- do
- {
- do
- {
- do
- {
- cout << ("Podaj liczbe wierzy macierzy 1:") << endl;
- cin >> wie1;
- if (wie1 < 500)
- {
- cout << endl << "Liczba wierszy musi byc wieksza od 500" << endl<<endl;
- }
- else cout << endl << "Zaakceptowano" << endl<<endl;
- } while (wie1 < 500);
- do
- {
- cout << ("Podaj liczbe kolumn macierzy 1:") << endl;
- cin >> kol1;
- if (kol1 < 500)
- {
- cout << endl << "Liczba kolumn musi byc wieksza od 500" << endl<< endl;
- }
- else cout << endl << "Zaakceptowano" << endl<<endl;
- } while (kol1 < 500);
- do
- {
- cout << ("Podaj liczbe wierszy macierzy 2:") << endl;
- cin >> wie2;
- if (wie2 < 500)
- {
- cout << endl << "Liczba wierszy musi byc wieksza od 500" << endl << endl;
- }
- else cout << endl << "Zaakceptowano" << endl<<endl;
- } while (wie2 < 500);
- do
- {
- cout << ("Podaj liczbe kolumn macierzy 2:") << endl;
- cin >> kol2;
- if (kol2 < 500)
- {
- cout << endl << "Liczba kolumn musi byc wieksza od 500" << endl<< endl;
- }
- else cout << endl << "Zaakceptowano" << endl << endl;
- }while (kol2 < 500);
- }while (kol2 == NULL);
- if (kol1 != wie2)
- {
- cout << endl << "Liczba kolumn macierzy 1 nie zgadza sie z liczba wierszy macierzy 2" << endl<<endl;
- }
- } while (kol1 != wie2);
- macierz1 = new float *[wie1];
- for (int z = 0; z < wie1; z++)
- {
- macierz1[z] = new float[kol1];
- }
- macierz2 = new float* [wie2];
- for (int z = 0; z < wie2; z++)
- {
- macierz2[z] = new float[kol2];
- }
- auto start = chrono::high_resolution_clock::now();
- srand((unsigned int)time(NULL));
- for (int x = 0; x < wie1; x++)
- {
- for (int y = 0; y < kol1; y++)
- {
- macierz1[x][y] = (((float)rand() / RAND_MAX) * ((rand() % 11) + 1));
- }
- }
- for (int a = 0; a < wie2; a++)
- {
- for (int b = 0; b < kol2; b++)
- {
- macierz2[a][b] = (((float)rand() / RAND_MAX) * ((rand() % 11) + 1));
- }
- }
- auto finish = chrono::high_resolution_clock::now();
- chrono::duration<double> elapsed = finish - start;
- cout << "Czas wykonania wygenerowania dwoch macierzy: " << elapsed.count() << " s" << endl;
- //wypisanie(macierz1, wie1, kol1);
- auto start2 = chrono::high_resolution_clock::now();
- ofstream plik("macierze.txt");
- cout << "Zapis podstawowych danych do pliku" << endl;
- plik << wie1 << endl;
- plik << kol1 << endl;
- plik << wie2 << endl;
- plik << kol2 << endl;
- for (int x = 0; x < wie1; x++)
- {
- for (int y = 0; y < kol1; y++)
- {
- plik << macierz1[x][y] << endl;
- }
- }
- for (int x = 0; x < wie2; x++)
- {
- for (int y = 0; y < kol2; y++)
- {
- plik << macierz2[x][y] << endl;
- }
- }
- auto finish2 = chrono::high_resolution_clock::now();
- chrono::duration<double> elapsed2 = finish2 - start2;
- cout << "Czas wykonania zapisu: " << elapsed2.count() << " s" << endl;
- cout << "Plik gotowy" << endl;
- plik.close();
- getchar();
- }
- // Uruchomienie programu: Ctrl + F5 lub menu Debugowanie > Uruchom bez debugowania
- // Debugowanie programu: F5 lub menu Debugowanie > Rozpocznij debugowanie
- // Porady dotyczące rozpoczynania pracy:
- // 1. Użyj okna Eksploratora rozwiązań, aby dodać pliki i zarządzać nimi
- // 2. Użyj okna programu Team Explorer, aby nawiązać połączenie z kontrolą źródła
- // 3. Użyj okna Dane wyjściowe, aby sprawdzić dane wyjściowe kompilacji i inne komunikaty
- // 4. Użyj okna Lista błędów, aby zobaczyć błędy
- // 5. Wybierz pozycję Projekt > Dodaj nowy element, aby utworzyć nowe pliki kodu, lub wybierz pozycję Projekt > Dodaj istniejący element, aby dodać istniejące pliku kodu do projektu
- // 6. Aby w przyszłości ponownie otworzyć ten projekt, przejdź do pozycji Plik > Otwórz > Projekt i wybierz plik sln
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- #include <fstream>
- #include <math.h>
- #include <string.h>
- #include <iomanip>
- #include <string>
- #include <chrono>
- using namespace std;
- static int wie1, kol1, wie2, kol2;
- double temp=0;
- double temp1=0;
- int pom1 = 0, pom2 = 0;
- int wynik1, wynik2;
- float ** macierz1;
- float ** macierz2;
- float ** wynikmacierzy;
- string line;
- void wypisanie(float** macierz, int wiersz, int kolumny)
- {
- for (int x = 0; x < wiersz; x++)
- {
- for (int y = 0; y < kolumny; y++)
- {
- cout << ("%f ", macierz[x][y]);
- }
- }
- }
- void zapis(float** macierz, int wiersz, int kolumny)
- {
- auto start = chrono::high_resolution_clock::now();
- ofstream zapis("wynik.txt");
- cout << "Zapis podstawowych danych do pliku" << endl;
- //temp1 = ((double)100/((double)wiersz*(double)kolumny));
- for (int x = 0; x < wiersz; x++)
- {
- for (int y = 0; y < kolumny; y++)
- {
- //temp += temp1;
- //system("CLS");
- //cout << "Zapis podstawowych danych do pliku:" << endl;
- //cout << "Postep: " << setprecision(4) << fixed << temp << " %" << endl;
- zapis << macierz[x][y] << endl;
- }
- }
- auto finish = chrono::high_resolution_clock::now();
- chrono::duration<double> elapsed = finish - start;
- cout << "Czas wykonania zapisu: " << elapsed.count() << " s\n";
- cout << "Zapisano plik" << endl;
- zapis.close();
- }
- void zaladuj()
- {
- ifstream plik("C:/Users/Patryk/source/repos/MacierzeGeneracja/MacierzeGeneracja/macierze.txt");
- if (plik.is_open())
- {
- plik >> wie1 >> kol1 >> wie2 >> kol2;
- cout << wie1 << " wie1" << endl;
- cout << kol1 << " Kol1" << endl;
- cout << wie2 << " wie2" << endl;
- cout << kol2 << " Kol2" << endl;
- cout << endl;
- wynik1 = (wie1 * kol1);
- wynik2 = (wie2 * kol2);
- macierz1 = new float* [wie1];
- for (int z = 0; z < wie1; z++)
- {
- macierz1[z] = new float[kol1];
- }
- macierz2 = new float* [wie2];
- for (int z = 0; z < wie2; z++)
- {
- macierz2[z] = new float[kol2];
- }
- wynikmacierzy = new float* [kol2];
- for (int zm1 = 0; zm1 < wie1; zm1++)
- {
- wynikmacierzy[zm1] = new float[kol2];
- }
- for (int x = 0; x < wie1; x++)
- {
- for (int y = 0; y < kol2; y++)
- {
- wynikmacierzy[x][y] = 0;
- }
- }
- for (int x = 0; x < wie1; x++)
- {
- for (int y = 0; y < kol1; y++)
- {
- plik >> macierz1[x][y];
- }
- }
- //wypisanie(macierz1, wie1, kol1);
- for (int a = 0; a < wie2; a++)
- {
- for (int b = 0; b < kol2; b++)
- {
- plik >> macierz2[a][b];
- }
- }
- plik.close();
- }
- else cout << "Nie można otworzyć pliku";
- }
- int main()
- {
- zaladuj();
- for (int i = 0; i < wie1; ++i)
- for (int j = 0; j < kol2; ++j)
- for (int k = 0; k < kol1; ++k)
- {
- wynikmacierzy[i][j] += macierz1[i][k] * macierz2[k][j];
- }
- zapis(wynikmacierzy, wie1, kol2);
- getchar();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement