1.Составьте программу формирования из массива A (N) двух массивов, в которых первый
массив заполнен положительными, а второй – отрицательными элементами. И
отсортировать первый – по убыванию, второй – по возрастанию.
C/C++
Решите пожалуйста задачу на языке Си!!!
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int ascending(const void* a, const void* b) {
if (*((int*)a) < *((int*)b)) return -1;
if (*((int*)a) > *((int*)b)) return 1;
return 0;
}
int descending(const void* a, const void* b) {
if (*((int*)a) > *((int*)b)) return -1;
if (*((int*)a) < *((int*)b)) return 1;
return 0;
}
int main(void) {
size_t n = 0;
int* a = NULL;
size_t m = 0;
int* neg = NULL;
size_t k = 0;
int* pos = NULL;
size_t i, j, h;
srand((unsigned)time(NULL));
printf("N: ");
scanf("%u", &n);
a = (int*)malloc(n * sizeof(int));
for (i = 0; i < n; ++i)a[i] = rand() % 19 - 9;
for (i = 0; i < n; ++i) printf("%3i", a[i]);
puts("");
for (i = 0; i < n; ++i) a[i] < 0 ? ++m : ++k;
neg = (int*)malloc(m * sizeof(int));
pos = (int*)malloc(k * sizeof(int));
for (i = j = h = 0; i < n; ++i) {
if (a[i] < 0) neg[j++] = a[i];
else pos[h++] = a[i];
}
qsort(pos, k, sizeof(pos[0]), descending);
for (i = 0; i < k; ++i) printf("%3i", pos[i]);
puts("");
qsort(neg, m, sizeof(neg[0]), ascending);
for (i = 0; i < m; ++i) printf("%3i", neg[i]);
puts("");
free(a);
free(neg);
free(pos);
return 0;
}
#include <stdio.h>
#include <time.h>
int ascending(const void* a, const void* b) {
if (*((int*)a) < *((int*)b)) return -1;
if (*((int*)a) > *((int*)b)) return 1;
return 0;
}
int descending(const void* a, const void* b) {
if (*((int*)a) > *((int*)b)) return -1;
if (*((int*)a) < *((int*)b)) return 1;
return 0;
}
int main(void) {
size_t n = 0;
int* a = NULL;
size_t m = 0;
int* neg = NULL;
size_t k = 0;
int* pos = NULL;
size_t i, j, h;
srand((unsigned)time(NULL));
printf("N: ");
scanf("%u", &n);
a = (int*)malloc(n * sizeof(int));
for (i = 0; i < n; ++i)a[i] = rand() % 19 - 9;
for (i = 0; i < n; ++i) printf("%3i", a[i]);
puts("");
for (i = 0; i < n; ++i) a[i] < 0 ? ++m : ++k;
neg = (int*)malloc(m * sizeof(int));
pos = (int*)malloc(k * sizeof(int));
for (i = j = h = 0; i < n; ++i) {
if (a[i] < 0) neg[j++] = a[i];
else pos[h++] = a[i];
}
qsort(pos, k, sizeof(pos[0]), descending);
for (i = 0; i < k; ++i) printf("%3i", pos[i]);
puts("");
qsort(neg, m, sizeof(neg[0]), ascending);
for (i = 0; i < m; ++i) printf("%3i", neg[i]);
puts("");
free(a);
free(neg);
free(pos);
return 0;
}
Молчанов Антоха
скажите пожалуйста, возможно ли сделать задачу без указателей??
Молчанов Антоха
спасибо!!!
Похожие вопросы
- Решить задачу на языке СИ
- Помогите с решением задачи на языке СИ
- Помогите пожалуйста решить задачу на языке СИ или С# !!!
- Помогите с задачей на языке СИ
- Помогите с 4 задачей на языке си
- Помогите пожалуйста доделать задачу на языке СИ!!!
- Задача на языке си!!!
- Задача на языке си++
- Решите, пожалуйста, задачу на c++
- Написать программу на языке Си, которая решит эту задачу: