Задача по функциям - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д