Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //SDIZO I1 212B LAB01
- //Bartosz Wdowiak
- //wb39475@zut.edu.pl
- #include "stdafx.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <iostream>
- #include <ctime>
- #include <fstream>
- using namespace std;
- struct Struktura { //tworzenie struktury
- int i;
- char c;
- float f;
- };
- Struktura** Losowanie(int N) { //funkcja losująca
- struct Struktura** tab = (struct Struktura**) malloc(N * sizeof(struct Struktura*)); //alokacja pamięci na tablicę N wskaźników na struktury
- bool spr;
- int k = 0;
- int *liczby = new int[N];
- for (int x = 0; x < N; x++) {
- tab[x] = (struct Struktura*) malloc(sizeof(struct Struktura)); //alokacja pamięci na pojedynczą strukturę z przypisaniem adresu do x-tej pozycji tablicy tab[]
- do {
- int temp = (rand() % 10000) - 1000; //losowanie inta z zakresu od -1000 do 9000
- spr = true;
- for (int i = 1; i <= k; i++) {
- if (temp == liczby[i]) { //jeżeli jest to ustaw spr na false
- spr = false;
- }
- }
- if (spr == true) {
- liczby[k] = temp;
- k++;
- }
- } while (spr != true);
- tab[x]->i = liczby[x];
- tab[x]->c = (rand() % 22) + 66; //przypisanie litery losowanej z zakresu od B do X
- tab[x]->f = 1000 + x + 1; //przypisanie liczby 1000 + numer struktury (x od 0 dlatego "+1")
- }
- return tab; //zwracanie adresu tablicy
- }
- void Kasowanie(Struktura**tab, int N) { //funkcja zwalniająca pamięć
- for (int x = 0; x < N; x++) {
- free(tab[x]);
- }
- free(tab);
- }
- void BubbleSort(Struktura**tab, int N) { //sortowanie bąbelkowe
- do {
- for (int i = 0; i < N - 1; i++) {
- if (tab[i]->i > tab[i + 1]->i) { //jeżeli nastęny mniejszy niż obecny
- swap(tab[i], tab[i + 1]); //to zamien miejscami
- }
- }
- N = N - 1;
- } while (N > 1);
- }
- int Zliczanie(Struktura**tab, int N, char X) { //zliczanie wystąpień znaku
- int licznik = 0;
- for (int i = 0; i < N; i++) {
- if (tab[i]->c == X) {
- licznik++;
- }
- }
- return licznik;
- }
- int main()
- {
- srand(time(NULL));
- int N;
- char X;
- double czas_wykonania;
- int licznik;
- Struktura**tablica;
- std::ifstream plik;
- plik.open("inlab01.txt", ios::in); //otworzenie pliku
- if (plik.good() == false) { //sprawdzenie pliku
- cout << "BRAK DOSTEPU DO PLIKU!" << endl;
- }
- plik >> N >> X; //przypisanie danych wejsciowych z pliku do zmiennych
- clock_t start, stop;
- start = clock(); //czas start
- tablica = Losowanie(N);
- BubbleSort(tablica, N);
- licznik = Zliczanie(tablica, N, X);
- for (int i = 0; i < 20; i++) { //wypisanie pierwszych 20 struktur
- cout << "Struktura nr " << i + 1 << ":" << endl << tablica[i]->c << endl << tablica[i]->i << endl << tablica[i]->f << endl;
- }
- Kasowanie(tablica, N);
- stop = clock(); //czas stop
- czas_wykonania = (double)(stop - start) / CLOCKS_PER_SEC; //wyliczenie czasu wykonania
- cout << "Znak: " << X << " pojawil sie " << licznik << " razy" << endl << "Czas wykonania programu: " << czas_wykonania << "s" << endl;
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement