Нужно перевести из С++ в Си - 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)--;
        }}

Объяснение кода листинга программы

  1. Удаление из массива последний четный элемент.
  2. Ввод размера массива с клавиатуры.
  3. Вывод исходного массива на экран.
  4. Удаление последнего четного элемента из массива.
  5. Вывод измененного массива на экран.
  6. Ожидание нажатия клавиши для продолжения программы.
  7. Возврат значения 0 в функцию main(), что означает успешный конец работы программы.
  8. Подключение кирилицы в консольном окне.
  9. Использование кодовой таблицы 1251 для вывода и ввода.
  10. Ввод размера массива с клавиатуры осуществляется с помощью функции scanf().
  11. Вывод исходного массива на экран с помощью функции print_array().
  12. Удаление последнего четного элемента из массива с помощью функции Del_lasteven_array().
  13. Вывод измененного массива на экран с помощью функции print_array().
  14. Ожидание нажатия клавиши для завершения программы с помощью функции wait_press_key().
  15. Использование функции getch() для получения нажатой клавиши.
  16. В функции Del_lasteven_array() используется два вложенных цикла.
  17. Первый цикл перебирает элементы массива в обратном порядке.
  18. Второй цикл перемещает элементы массива, начиная с нечетного элемента, на следующий четный элемент.
  19. Перемещение элементов массива осуществляется с помощью оператора присваивания =.
  20. Размер массива уменьшается на единицу с помощью оператора --.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы