User:Kkk

1. Dane są dwie tablice liczb zmiennoprzecinkowych o długościach: (1) 3*N oraz (2) N, gdzie N jest liczbą naturalną. Zdefiniuj funkcję fun_arr, która w parametrze przyjmie dwie tablice (o podanej wyżej specyfikacji) oraz wskaźnik na pewną dodatkową funkcję fun_aux. Funkcja fun_arr z każdych trzech sąsiadujących elementów (o indeksach {3i, 3i+1, 3i+2}) z pierwszej tablicy ma obliczyć, za pomocą fun_aux, pojedynczą wartość i wstawić ją do drugiej tablicy w element o indeksie i. Funkcja pomocnicza fun_aux, dla trzech podanych liczb, ma zwracać wartość największą. W funkcji głównej stwórz przykładowe dynamiczne tablice (1) i (2) spełniające warunki z początku zadania i wykorzystując funkcje fun_arr i fun_aux, uzupełnij tablicę wyjściową (2). Wypisz na ekranie jej wartości. Zadbaj o właściwe zarządzanie pamięcią dynamiczną. // Created by llutsefer on 1/9/23.


 * 1) include
 * 2) include

float fun_aux(float x, float y, float z){ return std::max(std::max(x, y), z); }

void fun_arr(float arr1[], float arr2[], int n, float(*fun_aux)(float, float, float)){ int helpForSmallArray = 0; for(int i = 0;i<(n*3)-2;i+=3){ arr2[helpForSmallArray] = fun_aux(arr1[i],arr1[i+1],arr1[i+2]); helpForSmallArray++; } }

int main { const int n = 4; float *arr1 = new float[n*3]{1.0,1.0,2.5,2.0,1.0,-0.5,-1.5,-3.0,-4.0,0.0,0.0,0.0}; float *arr2 = new float[n]; float (*fun_auxPTR)(float, float, float) = fun_aux; fun_arr(arr1, arr2, n, fun_auxPTR); for(int i = 0;i<n;i++){ std::cout<<arr2[i]<<" "; }   delete[] arr1, arr2; return 0; }

2.Napisz program w języku C++, który stworzy dynamiczną tablicę dwuwymiarową trójkątną arr o rozmiarze NxN wybranego typu liczbowego i wypełni ją dowolnymi wartościami. Zdefiniuj funkcję, która w parametrze przyjmie wskaźnik na wskaźnik na typ void (do tablicy trójkątnej arr), rozmiar N, wielkość w bajtach pojedynczego elementu sizen tablicy przekazanej w pierwszym parametrze oraz dwie współrzędne x, y typu całkowitego. Funkcja ma zwrócić wskaźnik typu void ustawiony na podany we współrzędnych x, y element tablicy lub nullptr jeżeli nie ma takiego elementu. Pokaż użycie tej funkcji i wykonaj dealokację tablicy arr.
 * 1) include

int** createTriangularArray(int n){ int** array = new int*[n]; int help = n;   srand(time(NULL)); for(int i = 0;in) return nullptr; if(x>(n-y)) return nullptr; char* arrPtr = (char*)arr[y]; return (void*)(arrPtr+(x*sizeOfElement)); }

int main2{ int n = 5; int** arrInt = createTriangularArray(n); void** arr = (void**)arrInt; std::cout<<funcZad2(arr, n, sizeof(int), 3, 0); for(int i = 0;i<n;i++){ delete[] arrInt[i]; }   delete[] arrInt; arrInt = nullptr; arr = nullptr; return 0; }

3.Zdefiniuj funkcję arr_fun, która w parametrach przyjmie: (1) wskaźnik na początek tablicy wektorów, (2) wskaźnik na za-ostatni element tej tablicy, (3) wskaźnik na początek tablicy wynikowej z obliczonymi długościami oraz (4) wskaźnik na funkcję pomocniczą, która zwraca wartość zmiennoprzecinkową a w parametrach bierze dwie wartości zmiennoprzecinkowe. Zdefiniuj funkcję pomocniczą, która zwróci długość wektora przy podaniu przez parametry jego dwóch współrzędnych.W funkcji głównej stwórz przykładową dynamiczną tablicę wektorów, wyznacz za pomocą stworzonej funkcji arr_fun ich długości i wyświetl powstałą w ten sposób tablicę wynikową. W zadaniu nie można używać funkcji z biblioteki.


 * 1) include
 * 2) include

float helpFunZad3(float x, float y){ return sqrt(pow(x,2) + pow(y,2)); }

void arr_fun(float* arr_begin, float* arr_end, float* begin_of_result_arr, float (*functionPtr)(float, float)){ int help = 0; for(int i=0;arr_begin+i<=arr_end;i+=2){ *(begin_of_result_arr+help) = functionPtr(*(arr_begin+i), *(arr_begin+i+1)); help++; } }

int main{ float *arr = new float [8]{1.0,1.0,2.0,1.0,1.0,3.0,3.0,1.0}; float *resultArr = new float [4]; float (*functionPtr)(float, float) = helpFunZad3; arr_fun(arr, arr+7, resultArr, functionPtr); for(int i = 0;i<4;i++){ std::cout<<*(resultArr+i)<<std::endl; }   return 0; }

4.Napisz program, który przyjmie od użytkownika liczbę całkowitą n. Utwórz dynamiczną tablicę liczb całkowitych arr i wypełnij ją wartościami od użytkownika większymi od 0. Liczby te reprezentują liczbę elementów dla kolejnych wierszy nieregularnej tablicy dwuwymiarowej arr2d. Następnie utwórz dynamiczną n-elementową tablicę wskaźników na tablice liczb zmiennoprzecinkowych arr2d. Każdemu wskaźnikowi zarezerwuj pamięć zgodnie z korespondującą indeksowo wartością tablicy arr. Wypełnij wszystkie tablice liczbami zmiennoprzecinkowymi pobranymi od użytkownika. Utwórz dynamiczną n-elementową tablicę liczb zmiennoprzecinkowych result, której elementami są sumy elementów poszczególnych wierszy tablicy arr2d, a następnie wyświetl jej zawartość.


 * 1) include

int main4{ int n;   std::cin>>n; int *arr = new int[n]; int numberFromUser; float floatNumberFromUser; for(int i = 0;i>numberFromUser; if (numberFromUser <= 0) { std::cout << "Please enter a number greater than 0"<>floatNumberFromUser; arr2d[i][j] = floatNumberFromUser; }   }    float *resultArr = new float [n]; floatNumberFromUser = 0; for(int i = 0;i<n;i++){ for(int j = 0;j<arr[i];j++){ floatNumberFromUser += arr2d[i][j]; }       resultArr[i] =floatNumberFromUser; floatNumberFromUser = 0; }   for(int i = 0;i<n;i++){ std::cout<<resultArr[i]<<" "; }   for(int i = 0;i<n;i++){ delete[] arr2d[i]; }   delete[] arr, arr2d, resultArr; arr = nullptr; arr2d = nullptr; resultArr = nullptr; return 0; } 5.Napisz program, który przyjmuje od użytkownika dwie liczby całkowite n i m. Utwórz dynamiczną tablicę dwuwymiarową liczb całkowitych nieujemnych arr2d o rozmiarze nx2m i wypełnij ją losowymi wartościami z przedziału <0,10). Następnie utwórz drugą dynamiczną tablicę dwuwymiarową liczb zmiennoprzecinkowych arr2d_2 o n wierszach. Korzystając z kolejnych elementów tablicy arr2d wypełnij kolejne wiersze tablicy arr2d_2 w następujący sposób: kolejne dwa elementy z każdego wiersza scal w liczbę zmiennoprzecinkową, w której mniejsza z tych dwóch liczb będzie częścią całkowitą, a większa - częścią ułamkową. Następnie wyświetl zawartość tablicy arr2d_2.


 * 1) include

int main{ int n, m;   std::cin>>n>>m; unsigned int **arr2d = new unsigned int* [n]; srand(time(NULL)); for(int i = 0;i<n;i++){ arr2d[i] = new unsigned int[2*m]; for(int j = 0;j<2*m;j++){ arr2d[i][j] = 1+rand%9; }   }    float** arr2d_2 = new float* [n]; int help = 0; for(int i = 0;i<n;i++){ arr2d_2[i] = new float[m]; for(int j = 0;j<2*m;j+=2){ arr2d_2[i][help] = arr2d[i][j] + (float(arr2d[i][j+1])/10); help++; }       help = 0; }   for(int i = 0;i<n;i++){ for(int j = 0;j<m;j++){ std::cout<<arr2d_2[i][j]<<" "; }       std::cout<<std::endl; }   for(int i = 0;i<n;i++) { delete[] arr2d_2[i]; }   for(int i = 0;i<n;i++){ delete[] arr2d[i]; }   delete[] arr2d; delete[] arr2d_2; arr2d = nullptr; arr2d_2 = nullptr; return 0; }

6.Ranking gry NewCSShooter przechowywany jest na serwerze w następujący sposób: MystiqueHero;1365;6890;15210 Frizz;5400;6200;11000 Każdy wiersz reprezentuje statystyki rozegranych meczy dla danego użytkownika. Pojedynczy wiersz zawiera następujące informacje oddzielone od siebie średnikiem: nazwa użytkownika, ilość wygranych meczy, ilość rozegranych meczy, ilość dokonanych likwidacji. Można zinterpretować, że gracz MystiqueHero wygrał 1365 meczy na 6890 wszystkich rozegranych meczy i dokonał 15210 likwidacji. Zbuduj ranking graczy obliczając ich wynik rankingowy. Napisz funkcję, która przyjmuje dynamiczną tablicę napisów (c-string), w której w każdym elemencie przechowywany jest zapis statystyki danego gracza oraz drugą taką tablicę wyjściową na wyniki. Funkcja powinna w drugą tablicę wyjściową wpisać informacje o graczu oraz jego wynik liczony w następujący sposób: wygrane mecze + wszystkie mecze + ilość likwidacji. Możesz założyć że nazwa użytkownika to nie więcej niż 12 znaków oraz całkowity wynik to liczba całkowita złożona z maksymalnie 10 cyfr. Napisz program testujący zaimplementowaną funkcję.


 * 1) include
 * 2) include 

void funcZad6(char** arr, char** result){ int lengthOfArr = 0; int j;   int help; int lengthOfOneString = 0; while(arr[lengthOfArr]) lengthOfArr++; char*** helpArr = new char**[lengthOfArr]; for(int i = 0;i<lengthOfArr;i++){ helpArr[i] = new char*[5]; helpArr[i][0] = new char[13]; helpArr[i][1] = new char [10]; helpArr[i][2] = new char [10]; helpArr[i][3] = new char [10]; }   for(int i = 0;i<lengthOfArr;i++){ j = 0; help = 0; while(arr[i][j]!=';'){ helpArr[i][0][help] = arr[i][j]; j++; help++; }           help = 0; j++; while(arr[i][j]!=';'){ helpArr[i][1][help] = arr[i][j]; j++; help++; }           help = 0; j++; while(arr[i][j]!=';'){ helpArr[i][2][help] = arr[i][j]; j++; help++; }           help = 0; j++; while(arr[i][j]!='\0'){ helpArr[i][3][help] = arr[i][j]; j++; help++; }   }    for(int i = 0;i<lengthOfArr;i++){ lengthOfOneString = 0; help = 0; while (helpArr[i][0][lengthOfOneString]) lengthOfOneString++; result[i][0]='"';       std::copy(helpArr[i][0], helpArr[i][0]+lengthOfOneString, result[i]+1);        help = atoi(helpArr[i][1]) + atoi(helpArr[i][2]) + atoi(helpArr[i][3]);        *(result[i]+lengthOfOneString+1) = ' ';        sprintf(result[i]+lengthOfOneString+2, "%d", help);        lengthOfOneString = 0;        while (result[i][lengthOfOneString]) lengthOfOneString++;        result[i][lengthOfOneString] ='"'; }   for(int i = 0;i<lengthOfArr;i++){ delete[] helpArr[i][0]; delete[] helpArr[i][1]; delete[] helpArr[i][2]; delete[] helpArr[i][3]; delete[] helpArr[i]; }   delete[] helpArr; helpArr = nullptr; } int main6{ char **arr = new char* [5]; arr[0] = new char[]{"MystiqueHero;1365;6890;15210"}; arr[1] = new char[]{"Frizz;5400;6200;11000"}; arr[2] = new char[]{"Ziemniak;9965;11000;73000"}; arr[3] = new char[]{"Evel00na;10;10;90"}; char **result = new char * [5]; for(int i = 0;i<4;i++){ result[i] = new char [23]; }   funcZad6(arr, result); for(int i = 0;i<4;i++){ for(int y = 0;y<23;y++){ if(result[i][y]=='\0') break; std::cout<<result[i][y]; }       std::cout<<","<<std::endl; }   return 0; }

7.Napisz funkcję, która przyjmuje dwie równoliczne dynamiczne tablice wskaźników na napisy (c-string). W pierwszej tablicy, w każdym napisie zapisana jest tablica rejestracyjna, która została przechwycona przez fotoradar. Zakładamy że każda tablica rejestracyjna rozpoczyna się od dwóch lub trzech liter wskazujących miejscowość rejestracji, a następnie biały znak oraz ciąg cyfr (długość ciągu to 4 lub 5 cyfr). Należy pomóc jednostce policji w pogrupowaniu rejestracji według miejscowości, aby odpowiednio rozesłać poszczególnym jednostkom numery rejestracji wskazane do wystawienia mandatu. Funkcja powinna zapisać do drugiej tablicy napisy, które są połączeniem tablic rejestracyjnych dla konkretnego województwa (zobacz przykład). Funkcja ma zwrócić liczbę napisów w wyjściowej tablicy. Kolejność województw i rejestracji pojazdów w tablicy wynikowej nie ma znaczenia. Napisz program testujący zaimplementowaną funkcję.


 * 1) include
 * 2) include
 * 3) include

void printArray(char* arr[],int lengthOfArrays){ for(int i = 0;i<lengthOfArrays;i++){ std::cout<<arr[i]<<std::endl; } }

bool funcForSort(char* b, char* n){ return std::strcmp(b, n) < 0; }

int funcZad7(char* arr[], char* result[], int lengthOfArrays){ std::sort(arr, arr+lengthOfArrays, funcForSort); printArray(arr, lengthOfArrays); std::cout<<"///////////////////////////"<<std::endl; int help = 0, numberForResult = 0, positionForAddNumber; bool is3Region; for(int i = 0;i<lengthOfArrays;i++){ if(i == 0){ if(arr[i][2]==' ') { is3Region = false; result[help][0] = arr[i][0]; result[help][1] = arr[i][1]; result[help][2] = arr[i][2]; positionForAddNumber = 3; for (int j = 3; arr[i][j]!='\0'; j++) { result[help][positionForAddNumber] = arr[i][j]; positionForAddNumber++; }               result[help][positionForAddNumber] = ' '; positionForAddNumber++; }           else if(arr[i][3]==' ') { is3Region = true; result[help][0] = arr[i][0]; result[help][1] = arr[i][1]; result[help][2] = arr[i][2]; result[help][3] = arr[i][3]; positionForAddNumber = 4; for (int j = 4; arr[i][j]!='\0'; ++j) { result[help][positionForAddNumber] = arr[i][j]; positionForAddNumber++; }               result[help][positionForAddNumber] = ' '; positionForAddNumber++; }           numberForResult++; } else if((arr[i][0] != arr[i-1][0]) || (arr[i][1] != arr[i-1][1]) || (arr[i-1][2] != arr[i][2])){ help++; if(arr[i][2]==' ') { is3Region = false; result[help][0] = arr[i][0]; result[help][1] = arr[i][1]; result[help][2] = arr[i][2]; positionForAddNumber = 3; for (int j = 3; arr[i][j]!='\0'; ++j) { result[help][positionForAddNumber] = arr[i][j]; positionForAddNumber++; }               result[help][positionForAddNumber] = ' '; positionForAddNumber++; }           if(arr[i][3]==' ') { is3Region = true; result[help][0] = arr[i][0]; result[help][1] = arr[i][1]; result[help][2] = arr[i][2]; result[help][3] = arr[i][3]; positionForAddNumber = 4; for (int j = 4; arr[i][j]!='\0'; ++j) { result[help][positionForAddNumber] = arr[i][j]; positionForAddNumber++; }               result[help][positionForAddNumber] = ' '; positionForAddNumber++; }           numberForResult++; }else if (is3Region == true) { for (int j = 4; arr[i][j]!='\0'; j++) { result[help][positionForAddNumber] = arr[i][j]; positionForAddNumber++; }           result[help][positionForAddNumber] = ' '; positionForAddNumber++; } else if (is3Region == false) { for (int j = 3; arr[i][j]!='\0'; j++) { result[help][positionForAddNumber] = arr[i][j]; positionForAddNumber++; }           result[help][positionForAddNumber] = ' '; positionForAddNumber++; }   }    return numberForResult; }

int main{ const int lengthOfArrays = 5; char** input = new char*[lengthOfArrays]; char** output = new char*[lengthOfArrays]; for(int i=0; i<lengthOfArrays; ++i) {       output[i]=new char[100]; }   input[0] = "LR 1234"; input[1] = "LR 28834"; input[2] = "LR 3388"; input[3] = "LR 888"; input[4] = "LR 4888"; int numberOfRecordsResult = funcZad7(input, output, lengthOfArrays); printArray(output, numberOfRecordsResult); for(int i=0; i<lengthOfArrays; ++i) {       delete[] output[i]; }   delete[] output; delete[] input; output = nullptr; input = nullptr; return 0; }

8.Radar morski na statku to prawdopodobnie najczęściej używany sprzęt elektroniczny podczas nawigacji. To doskonałe narzędzie do wykrywania obiektów wokół nas. Niestety jesteśmy tak bardzo uzależnieni od radaru, że czasami używamy go częściej niż własnych oczu do obserwacji wokół. Jednakże inna sytuacja miała miejsce, gdy pewien marynarz odczytywał dane z notatek pozostawionych na pokładzie swojego statku. W notatkach kapitan pokładu zapisał położenia N obiektów na morzu za pomocą współrzędnych biegunowych w następujący sposób: R1 F1 R2 F2 ... Rn Fn gdzie R to promień wodzący obiektu (odległość), zaś F to amplituda punktu (wartość kąt skierowanego w radianach). Zaimplementuj funkcję, która posortuje dane przedstawione w notatce tak, aby obiekty były w kolejności od najmniej do najbardziej odległego od statku naszego bohatera, który znajduje się w punkcie (0, 0). W sytuacji, gdy oba obiekty są tak samo odległe należy wybrać ten o większej amplitudzie. Napisz program, który przetestuje działanie tej funkcji i wyświetli współrzędne w układzie kartezjańskim tych obiektów w odpowiedniej kolejności.


 * 1) include
 * 2) include
 * 3) include

bool funcForSortZad8(float* x, float* y){ if(x[4]==y[4]&&x[1]>y[1]) return true; if(x[4]==y[4]&&x[1]y[4]) return false; return true; }

void zad8Func(float arr[],int length){ float** helpArr = new float*[length]; int help = 0; for(int i = 0;i<length/2;i++){ helpArr[i] = new float[5]; }   for(int i = 0;i<length;i+=2){ helpArr[help][0] = arr[i]; helpArr[help][1] = arr[i+1]; help++; }   for(int i = 0;i<length/2;i++){ helpArr[i][2] = std::round(helpArr[i][0]*std::cos(helpArr[i][1]) * 100) / 100; helpArr[i][3] = std::round(helpArr[i][0]*std::sin(helpArr[i][1]) * 100) / 100; helpArr[i][4] = std::round(sqrt(pow(helpArr[i][2],2)+ pow(helpArr[i][3],2)) * 100) / 100; }   std::sort(helpArr, helpArr+(length/2), funcForSortZad8); help = 0; for(int i = 0;i<length/2;i++){ arr[help] = helpArr[i][0]; arr[help+1] = helpArr[i][1]; help+=2; }   for(int i = 0;i<length/2;i++){ delete[] helpArr[i]; }   delete[] helpArr; helpArr = nullptr; }

int main{ const int lengthOfArray = 6; float arr[lengthOfArray] = {1.2,6.1,1.2,1.1,5.4,3.1}; zad8Func(arr, lengthOfArray); for(int i = 0;i<lengthOfArray;i+=2) { printf("%.3f %.3f\n", arr[i] * std::cos(arr[i + 1]), arr[i] * std::sin(arr[i + 1])); }   return 0; }