Из языка С++ перевести в Си - C (СИ)
Формулировка задачи:
/*
* Ввести целочисленный массив из N целых чисел.
* Найти максимальный элемент массива
*/
#include <iostream>
using namespace std;
int main()
{
int *arr; // указатель для выделения памяти под массив
int size; // размер массива
// Ввод количества элементов массива
cout << "n = ";
cin >> size;
if (size <= 0) {
// Размер масива должен быть положитлеьным
cerr << "Invalid size" << endl;
return 1;
}
arr = new int[size]; // выделение памяти под массив
// заполнение массива
for (int i = 0; i < size; i++) {
cout << "arr[" << i << "] = ";
cin >> arr[i];
}
// Нахождение максимального элемента
int max = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
// Вывод результата на экран
cout << "max = " << max << endl;
delete [] arr; // освобождение памяти
return 0;
}Решение задачи: «Из языка С++ перевести в Си»
textual
Листинг программы
#include <stdio.h>
#include <malloc.h>
int main(void) {
int* arr; // указатель для выделения памяти под массив
int i, max, size; // размер массива
// Ввод количества элементов массива
printf("n = ");
scanf("%d", &size);
if (size <= 0) {
// Размер масива должен быть положительным
fputs("Invalid size", stderr);
return 1;
}
arr = (int*)malloc((size_t)size * sizeof(int)); // выделение памяти под массив
// заполнение массива
for (i = 0; i < size; i++) {
printf("arr[%d] = ", i);
scanf("%d", &arr[i]);
}
// Нахождение максимального элемента
max = arr[0];
for(i = 1; i < size; i++) {
if(arr[i] > max)
max = arr[i];
}
// Вывод результата на экран
printf("max = %d\n", max);
free(arr); // освобождение памяти
return 0;
}
Объяснение кода листинга программы
- Объявлены переменные: указатель arr, переменные i, max, size.
- Пользователю предлагается ввести количество элементов массива.
- Проверка: если размер массива отрицательный или равен нулю, выводится сообщение об ошибке и возвращается 1.
- Выделение памяти под массив с помощью malloc.
- Цикл: заполнение массива с помощью scanf.
- Цикл: поиск максимального элемента, начиная со второго элемента массива.
- Вывод максимального элемента на экран с помощью printf.
- Освобождение памяти с помощью free.
- Возвращение 0, означающее успешный завершение программы.