Нужно перевести из С++ в Си - C (СИ) (153860)
Формулировка задачи:
Нужно перевести из С++ в Си
#include <iostream> #include <time.h> using namespace std; int* del(int*,int&); int main() { srand(time(NULL)); int size=5; int* arr=new int[size]; for (int i=0;i<size;i++) cout<<(arr[i]=rand()%10)<<" "; cout<<endl; int* temp; temp=del(arr,size); for (int i=0;i<size;i++) cout<<temp[i]<<" "; cout<<endl; system("pause"); return 0; } int* del(int* arr,int& size) { int* temp; for (int i=size-1;i>=0;i--) if (arr[i]%2==0) { for (int j=i;j<size-1;j++) arr[j]=arr[j+1]; temp=new int[size-1]; size--; for (int i=0;i<size;i++) temp[i]=arr[i]; return temp; } return arr; }
Решение задачи: «Нужно перевести из С++ в Си»
textual
Листинг программы
Листинг: //Удалить из состава массива четные элементы #include<stdio.h> #include<math.h> #include<conio.h> /*Модуль функций расширения ввода-вывода(в Паскале аналогичный модуль CRT)*/ #include<windows.h> void print_array(int *a,int n,char *msg);//Вывод строки заголовка msg и элементов массива х размером n void wait_press_key(char *msg);//Вывод строки msg и ожидание нажатия клавиши для продолжения программы. void Del_lasteven_array(int *a,int *n);//Удаление из массива последний четный элемент. int main() { int n; int a[]={5,4,3,-4,3,2,5,4,8, 13, -34,16,-34, 18,0,12, -56,13, 18, 34, -102,66,-38,-71,23,0,15}; //Подключение кирилицы в консольном окне SetConsoleOutputCP(1251);//Использует для вывода кодовую таблицу 1251 SetConsoleCP(1251); //Использует для ввода кодовую таблицу 1251 бом-бом printf("\t Введите размер массива <=20\n"); scanf("%d",&n); print_array(a,n,"Исходный массив a"); //delete last even elements Del_lasteven_array(a,&n); // Answer print_array(a,n,"Массив х после удаления even"); wait_press_key("\nДля завершения программы нажмите любую клавишу\n"); return 0; } void print_array(int *a,int n,char *msg) { int i; printf("\n%s размером %d\n",msg,n); for(i=0; i<n;i++) printf("%8d",a[i]); } void wait_press_key(char *msg) { printf(msg); getch(); } void Del_lasteven_array(int *a,int *n) { int i,j; for(i=*n-1;i>=0;i--) if(a[i]%2==0) {for(j=i;j<*n-1;j++) a[j]=a[j+1]; (*n)--; }}
Объяснение кода листинга программы
- Удаление из массива последний четный элемент.
- Ввод размера массива с клавиатуры.
- Вывод исходного массива на экран.
- Удаление последнего четного элемента из массива.
- Вывод измененного массива на экран.
- Ожидание нажатия клавиши для продолжения программы.
- Возврат значения 0 в функцию main(), что означает успешный конец работы программы.
- Подключение кирилицы в консольном окне.
- Использование кодовой таблицы 1251 для вывода и ввода.
- Ввод размера массива с клавиатуры осуществляется с помощью функции scanf().
- Вывод исходного массива на экран с помощью функции print_array().
- Удаление последнего четного элемента из массива с помощью функции Del_lasteven_array().
- Вывод измененного массива на экран с помощью функции print_array().
- Ожидание нажатия клавиши для завершения программы с помощью функции wait_press_key().
- Использование функции getch() для получения нажатой клавиши.
- В функции Del_lasteven_array() используется два вложенных цикла.
- Первый цикл перебирает элементы массива в обратном порядке.
- Второй цикл перемещает элементы массива, начиная с нечетного элемента, на следующий четный элемент.
- Перемещение элементов массива осуществляется с помощью оператора присваивания
=
. - Размер массива уменьшается на единицу с помощью оператора
--
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д