Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- // Она короч требует во 2 билете сделать 1 из заданий, используя динамические массивы
- int *CreateArray(int N, int min, int max){ // Это функ-я создания массива, заполняя его рандомными элементами
- int *mas = NULL; // В диапазоне от min do max
- if(max < min)
- {
- int s = min;
- min = max;
- max = s;
- }
- mas = (int*) malloc(sizeof(int)*N);
- if(mas == NULL) return NULL;
- for(int k = 0; k < N; k++)
- mas[k] = rand()%(max - min + 1) + min;
- return mas;
- }
- int main()
- {
- srand(time(NULL)); // Это вроде запускает таймер для того чтобы брать рандомные числа функцией rand()
- const int N = rand()%10 + 1; // Берем рандомное число - размер массива
- int * A = CreateArray(N, -10, 10); // Создаем массив из N элементов в диапазоне от -10 до 10
- int * B = CreateArray(N, 0, 0); // Создаем такой же массив только из нулей
- if(A == NULL){ // Проверка
- printf("Error.\n");
- return 0;
- }
- printf("A[%d] = {", N); // Выводим на экран массив А
- for(int k = 0; k < N; k++)
- printf("%d, ", A[k]);
- printf("};\n");
- int m = 0, n = 0, b = 0; // Тут короч пробегаемся по массиву A, считаем кол-во элементов
- for(int k = 0; k < N; k++) // Которые меньше нуля, равны нулю, больше нуля
- { // m - те, что меньше; n - те, что равны; b - те, что больше соответсвенно
- if(A[k] < 0) m++;
- else{
- if(A[k] > 0) b++;
- else{
- if(A[k] == 0) n++;
- }
- }
- }
- int mk = m, nk = n, bk = b;
- for(int k = 0; k < N; k++) // А теперь просто расставляем все элементы по координатам
- {
- if(A[k] < 0){
- B[m - mk] = A[k];
- mk--;
- }
- else
- {
- if(A[k] > 0)
- {
- B[m + n + (b - bk)] = A[k];
- bk--;
- }
- }
- }
- printf("B[%d] = {", N); // Выводим результат и освобождаем память
- for(int k = 0; k < N; k++)
- printf("%d, ", B[k]);
- printf("};\n");
- free(A);
- free(B);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment