Перевести код из С++ в С - C (СИ) (249407)
Формулировка задачи:
Требуется переписать код, но у меня что-то пошло не так и программа выводит либо несколько десятков рандомных чисел, либо последний элемент массива n-ое количество штук (где n - количество элементов в массиве)
#include <stdio.h> #include <conio.h> #include <math.h> #include <stdlib.h> #include <cstring> #include <iostream> using namespace std; int main() { int N; cin>>N; int A[ N ]; for (int i=0; i<N; i++) cin>>A[i]; for (int j=0; j<N; j++) for (int i=0; i<N-1; i++) if (abs(A[i])<abs(A[i+1])) swap(A[i],A[i+1]); for (int i=0; i<N; i++) cout << A[i]<<' '; return 0; }
Решение задачи: «Перевести код из С++ в С»
textual
Листинг программы
#include <stdio.h> #include <math.h> #include <stdlib.h> void swap(int *var1, int *var2) { int temp = *var1; *var1 = *var2; *var2 = temp; } int main() { int N = 0; puts("Enter size of array: "); scanf("%d", &N); int *arrayPtr = (int *)calloc(N, sizeof(int)); //-------------------------------- for (int i = 0; i < N; i++) { puts("Enter number for array:"); scanf("%d", &arrayPtr[i]); } //--------------------------------- for (int j = 0; j < N; j++) { for (int i = 0; i < N - 1; i++) { if (abs(arrayPtr[i]) < abs(arrayPtr[i + 1])) { swap(&arrayPtr[i], &arrayPtr[i + 1]); } } } for (int i = 0; i < N; i++) { printf("A[%d] = %d\n", i, arrayPtr[i]); } return 0; }
Объяснение кода листинга программы
- Объявлены функции
swap
иmain
. - В функции
swap
происходит обмен значениями двух указателей на целочисленные переменные. - В функции
main
считывается размер массива с помощьюscanf
. - Выделяется память под массив с помощью
calloc
. - Происходит заполнение массива с помощью
scanf
. - Производится сортировка массива методом пузырька в функции
main
. - Выводится отсортированный массив на экран с помощью
printf
в функцииmain
. - Программа возвращает 0, завершая свою работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д