Задан массив, состоящий из целых положительных и отрицательных чисел. Создать новый массив из положительных элементов старого - C (СИ)
Формулировка задачи:
Задача:
Задан массив, состоящий из целых положительных и отрицательных чисел. Создать новый массив из положительных элементов старого
при работе программы выводит на одно число меньше, а если в части
сделать
Вывподит совершенно страшные числа(
Подскажите, как быть!!!!
for (i=1;i<k;i++){ printf(" % d ",B[i]);}
for (i=0;i<k;i++){ printf(" % d ",B[i]);}
#include <stdio.h> #include <stdlib.h> #include <malloc.h> int main(void) { setvbuf(stdout,NULL,_IONBF,0); int n,i,k; int*A; int*B; printf("\n Введите N= "); scanf("%d",&n); A=(int*)malloc(n*sizeof(int)); B=(int*)malloc(n*sizeof(int)); for(i=0;i<n;i++){ A[i]=rand(); printf(" % d ",A[i]);} printf("\n"); printf("\n Положительные "); printf("\n"); k=0; for(i=0;i<n;i++){ if (A[i]>0){ k=k+1; B[k]=A[i];}} for (i=1;i<k;i++){ printf(" % d ",B[i]);} free(B); free(A); return EXIT_SUCCESS; }
Решение задачи: «Задан массив, состоящий из целых положительных и отрицательных чисел. Создать новый массив из положительных элементов старого»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define bounded_random(min, max) ( rand() % ( (max) - (min) + 1 ) + (min) ) #define MIN_VALUE (-10) #define MAX_VALUE (10) int main(void) { int * arrAll, * arrPos, countAll, countPos, i; srand(time(NULL)); printf("Number of elements: "); if ( scanf("%d", &countAll) != 1 || countAll < 1 ) { fprintf(stderr, "Wrong input!\n"); exit(1); } if ( ! ( arrAll = malloc(sizeof(int) * countAll) ) || ! ( arrPos = malloc(sizeof(int) * countAll) ) ) { perror("malloc"); exit(1); } for ( i = 0; i < countAll; ++i ) arrAll[i] = bounded_random(MIN_VALUE, MAX_VALUE); for ( countPos = i = 0; i < countAll; ++i ) if ( arrAll[i] > 0 ) arrPos[countPos++] = arrAll[i]; printf("All values:\n"); for ( i = 0; i < countAll; ++i ) printf("%d ", arrAll[i]); printf("\n"); if ( countPos == 0 ) printf("No positive values found.\n"); else { printf("Positive values:\n"); for ( i = 0; i < countPos; ++i ) printf("%d ", arrPos[i]); printf("\n"); } free(arrAll); free(arrPos); exit(0); }
Объяснение кода листинга программы
- Подключение необходимых библиотек: stdio.h, stdlib.h, time.h
- Определение функции, генерирующей случайное число в заданном диапазоне (bounded_random)
- Установка минимального и максимального значений для генерации случайных чисел (MIN_VALUE, MAX_VALUE)
- Ввод количества элементов массива с помощью функции scanf
- Выделение памяти под массив arrAll и arrPos
- Генерация случайных чисел и заполнение массива arrAll
- Перебор элементов массива arrAll и копирование положительных значений в массив arrPos
- Вывод всех значений массива arrAll
- Проверка наличия положительных значений в массиве arrPos
- Вывод положительных значений массива arrPos
- Освобождение памяти, выделенной под массивы arrAll и arrPos
- Выход из программы с кодом 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д