Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /************************************************************************
- Сгенерировать двумерный динамический массив из N×N элементов типа float, число N считать с клавиатуры (сделать цикл, который не позволит программе продолжиться, пока не будет введено 4 < N < 128). В этом массиве заменить элементы на их модули (math.h), если индексы равны (например, [3][3] или [2][2]), и поменять знак элементов в остальных случаях. Вывести оба массива. Код вывода элементов на экран, код генерации элементов и код преобразования массива оформить в виде отдельных функций.
- Пример исходного массива:
- +5.0 -3.2 -4.5 +6.1
- -2.0 -3.1 +3.9 +0.9
- +8.1 -2.4 +5.1 -8.3
- -4.7 +3.1 +8.3 -6.0
- Результат:
- +5.0 +3.2 +4.5 -6.1
- +2.0 +3.1 -3.9 -0.9
- -8.1 +2.4 +5.1 +8.3
- +4.7 -3.1 -8.3 +6.0
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <math.h>
- void generate(int* arr, int size)
- {
- srand(time(NULL));
- for (unsigned i = 0; i < size; ++i)
- {
- arr[i] = rand() % 201 - 100;
- }
- }
- void transform(int* arr, int h, int w)
- {
- for (unsigned i = 0; i < h; ++i)
- {
- for (unsigned j = 0; j < w; ++j)
- {
- arr[h * i + j] *= (-1);
- if (i == j)
- {
- arr[h * i + j] = abs(arr[h * i + j]);
- }
- }
- }
- }
- int* arrCopy(int* arrRes, const int* arrSource, int size)
- {
- for (unsigned i = 0; i < size; ++i)
- {
- arrRes[i] = arrSource[i];
- }
- return arrRes;
- }
- void print(const int* arr, int h, int w)
- {
- for (unsigned i = 0; i < h; ++i)
- {
- for (unsigned j = 0; j < w; ++j)
- {
- printf("%5d ", arr[h * i + j]);
- }
- puts(" ");
- }
- }
- int main()
- {
- unsigned width = 0;
- unsigned height = 0;
- // Input.
- do
- {
- system("cls");
- printf("Enter array height: ");
- scanf_s("%u", &height);
- } while (height < 4 || height > 128);
- do
- {
- system("cls");
- printf("Enter array width: ");
- scanf_s("%u", &width);
- } while (width < 4 || width > 128);
- int* arr = (int*)malloc(width * height * sizeof(int));
- int* arr2 = (int*)malloc(width * height * sizeof(int));
- // Generate, copy to arr2 and search.
- generate(arr, width * height);
- arrCopy(arr2, arr, width * height);
- transform(arr2, height, width);
- // Print.
- system("cls");
- printf("First array: \n");
- print(arr, height, width);
- printf("\n\nSecond array: \n");
- print(arr2, height, width);
- free(arr);
- free(arr2);
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement