Задача по функциям - C (СИ)
Формулировка задачи:
Условие таково:
Создать программу, которая выполняет действия из задания 1 и задания 2. По запросу с клавиатуры, программа выполняет следующие действия:
1) Ввести новый массив (динамический);
2) Задание 1;
3) Вывод массива;
4) Задание 2;
5) Выход.
В программе должно быть реализовано меню, каждое действие должно быть реализовано в отдельной функции.
Задание 1: Дан двумерный массив состоящий из различных элементов. В каждой строке выбирается минимальный элемент, а среди них максимальный элемент. Напечатать номер строки в которой расположен этот элемент
Задание 2: Напишите программу, которая вводит несколько строк текста и символ поиска и использует функцию strchr, чтобы определить суммарное число вхождений символа в текст.
Вот мой код. В первой задаче не получается найти максимальный из минимальных элементов, а при выполнении функций вывода и обеих задач выдает ошибки. Подскажите, что не так
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <locale>
int menu();
float *massiv;
void vvod (float *massiv, int n1, int m1);
int vivod (float *massiv, int n1, int m1);
int zadanie1 (float *massiv, int n1, int m1);
int zadanie2 (char *stroka, char symbol);
int main () {
setlocale(LC_ALL,"russian");
while (1) {
switch (menu()) {
case 1:
int n, m;
printf ("Введите число строк\n");
scanf ("%d", &n);
printf ("Введите число столбцов\n");
scanf ("%d", &m);
vvod (massiv, n, m);
break;
case 2:
zadanie1 (massiv, n, m);
break;
case 3:
vivod (massiv, n, m);
break;
case 4:
char stroka[1024];
printf ("Введите строку\n");
scanf ("%s", &stroka);
char symbol;
printf ("Введите символ для поиска\n");
scanf ("%c", &symbol);
zadanie2 (stroka, symbol);
break;
case 5:
return 0;
}
}
}
int menu () {
setlocale(LC_ALL,"russian");
int a;
do {
printf("\n Меню: \n");
printf("1. Ввести новый массив (динамический) \n");
printf("2. Задание 1 \n");
printf("3. Вывод массива\n");
printf("4. Задание 2 \n");
printf("5. Выход \n");
printf("\t Ваш выбор: ");
scanf("%d",&a);
} while (a>5);
return a;
}
void vvod (float *massiv, int n1, int m1) {
int i, j;
massiv = (float*) malloc(n1*m1*sizeof(float));
for (i=0;i<n1;i++)
for (j=0;j<m1;j++){
printf("Введите элемент [%d,%d]:\n", i+1, j+1);
scanf("%f", (massiv+i*m1+j));
}
}
int zadanie1 (float *massiv, int n1, int m1) {
int i, j;
float min;
for (i=0; i<n1; i++) {
min=*(massiv+i*m1+0);
for (j=0; j<m1; j++) {
if (*(massiv+i*m1+j)<min) {
min = *massiv;
}
}
printf("Минимальный элемент %i-й строки равен %0.2f\n", i+1, min);
}
max = min;
for (i = 0; i < n1; i++) {
min = *(massiv+i*m1+0);
for (j = 0; j < n; j++) {
if (*massiv < min) {
min = *massiv;
}
}
if (max < min) {
max = min;
}
}
return 0;
}
int vivod (float *massiv, int n1, int m1) {
int i, j;
printf("\n");
for (i=0;i<n1;i++){
for (j=0;j<m1;j++) {
printf("%0.2f\t", (massiv+i*m1+j));
}
printf("\n");
free(massiv);
}
return 0;
getch ();
}
int zadanie2 (char *stroka, char symbol) {
int chislo = 0;
char *ptr = NULL;
ptr = strchr(stroka, symbol);
while (ptr!=NULL)
{
chislo++;
}
printf("\n Число вхождений символа '%c' в текст равно %d\n", symbol, chislo);
return 0;
}Решение задачи: «Задача по функциям»
textual
Листинг программы
void vvod (float *&massiv, int n1, int m1);