Не могу переделать код (использование printf и scanf вместо cout и cin) - C (СИ)
Формулировка задачи:
Нужно сделать лабораторную работу по C, но у меня вообще ничего не получается с printf и scanf, плюс разбить на отдельные функции(ввод данных, вывод). Помогите пожалуйста!
Задание выглядит примерно так:
Программу изменить так, чтобы:
-исходные данные читались с клавиатуры;
-выдача результирующих данных производилась в консоль.
Вот мой код, который я написал под С++
[code]
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
int main()
{
srand(time(0)); // генерация случайных чисел
int num;
cin >> num;
float *arr = new float[num];
float **ptrarray = new float*[num];
for (int count = 0; count < num; count++)
ptrarray[count] = new float[num];
// заполнение массива
for (int count_row = 0; count_row < num; count_row++)
for (int count_column = 0; count_column < num; count_column++)
ptrarray[count_row][count_column] = (rand() % 100 + 1) / float((rand() % 100 + 1)); //заполнение массива случайными числами с масштабированием от 1 до 1000
// вывод массива
for (int count_row = 0; count_row < num; count_row++)
{
for (int count_column = 0; count_column < num; count_column++)
cout << setw(4) << setprecision(2) << ptrarray[count_row][count_column] << " ";
cout << endl;
}
int i, j;
float min;
for (i = 0; i < num; i++)
{
min = ptrarray[i][0];
for (j = 1; j < num; j++)
{
if (ptrarray[i][j]<min)
min = ptrarray[i][j];
}
arr[i] = min;
cout << arr[i] << " ";
}
//удаление из памяти
for (int count = 0; count < num; count++)
delete[]ptrarray[count];
delete[] arr;
system("pause");
return 0;
}Решение задачи: «Не могу переделать код (использование printf и scanf вместо cout и cin)»
textual
Листинг программы
//#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <iomanip>
//using namespace std;
int main()
{
srand(time(0)); // генерация случайных чисел
int num;
scanf("%d", &num);
//cin >> num;
float *arr = new float[num];
float **ptrarray = new float*[num];
for (int count = 0; count < num; count++)
ptrarray[count] = new float[num];
// заполнение массива
for (int count_row = 0; count_row < num; count_row++)
for (int count_column = 0; count_column < num; count_column++)
ptrarray[count_row][count_column] = (rand() % 100 + 1) / float((rand() % 100 + 1)); //заполнение массива случайными числами с масштабированием от 1 до 1000
// вывод массива
for (int count_row = 0; count_row < num; count_row++)
{
for (int count_column = 0; count_column < num; count_column++)
printf("%0.2f ", ptrarray[count_row][count_column]);
printf("\n");
//cout << setw(4) << setprecision(2) << ptrarray[count_row][count_column] << " ";
//cout << endl;
}
printf("\n");
int i, j;
float min;
for (i = 0; i < num; i++)
{
min = ptrarray[i][0];
for (j = 1; j < num; j++)
{
if (ptrarray[i][j]<min)
min = ptrarray[i][j];
}
arr[i] = min;
printf("%0.2f ", arr[i]);
//cout << arr[i] << " ";
}
//удаление из памяти
for (int count = 0; count < num; count++)
delete[]ptrarray[count];
delete[] arr;
system("pause");
return 0;
}
Объяснение кода листинга программы
- Начало работы программы
- Генерация случайных чисел
- Ввод количества строк для матрицы
- Выделение памяти под матрицу
- Заполнение матрицы случайными числами
- Вывод матрицы на экран
- Поиск минимального элемента в каждой строке матрицы и его сохранение в отдельном массиве
- Вывод минимальных значений на экран
- Удаление выделенной памяти
- Ожидание нажатия клавиши для завершения работы программы
- Возврат 0, что означает успешное завершение работы программы В данном коде используется два массива: массив-матрица с случайными числами и массив для хранения минимальных значений в каждой строке. С помощью функции scanf вводится количество строк для матрицы. Далее с помощью двух вложенных циклов заполняется матрица случайными числами. Затем с помощью двух вложенных циклов выводятся значения матрицы на экран. Далее с помощью двух вложенных циклов находится минимальное значение в каждой строке матрицы и сохраняется в отдельном массиве. Затем с помощью одного цикла выводятся минимальные значения на экран. После этого освобождается выделенная память и ожидается нажатие клавиши для завершения работы программы.