Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
afycso
0 / 0 / 0
Регистрация: 20.11.2016
Сообщений: 3
1

задача по функциям

20.11.2016, 17:01. Просмотров 791. Ответов 3

Условие таково:

Создать программу, которая выполняет действия из задания 1 и задания 2. По запросу с клавиатуры, программа выполняет следующие действия:
1) Ввести новый массив (динамический);
2) Задание 1;
3) Вывод массива;
4) Задание 2;
5) Выход.
В программе должно быть реализовано меню, каждое действие должно быть реализовано в отдельной функции.

Задание 1: Дан двумерный массив состоящий из различных элементов. В каждой строке выбирается минимальный элемент, а среди них максимальный элемент. Напечатать номер строки в которой расположен этот элемент
Задание 2: Напишите программу, которая вводит несколько строк текста и символ поиска и использует функцию strchr, чтобы определить суммарное число вхождений символа в текст.

Вот мой код. В первой задаче не получается найти максимальный из минимальных элементов, а при выполнении функций вывода и обеих задач выдает ошибки. Подскажите, что не так


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2016, 17:01
Ответы с готовыми решениями:

Задача по функциям и процедурам в языке С. Подпрограмма
Даны два предложения . В каком из них доля (в%) буквы б больше . ( Определить функцию для расчёта...

Задача по функциям
Разработать функцию типа float, что возвращает абсолютное значение разници первого и второго...

Задача по функциям и процедурам
Дано http://www.cyberforum.ru/attachment.php?attachmentid=891281&amp;stc=1&amp;d=1512925687. Зделать...

Задача по спискоразрушающим функциям
Под именем а и в заданы списки (1 2) и (3 4). Нужно получить новый список ((1 2 3 4) (2 3 4) (3 4)...

Задача по файл-функциям
Здравствуйте! Задали нашей группе задачку по файл-функциям и так как с Matlab раньше не встречались...

3
DmiMukh
28 / 28 / 20
Регистрация: 14.11.2016
Сообщений: 112
20.11.2016, 18:09 2
У вас проблемы с памятью, точнее неправильная работа с памятью. И еще, инициализируйте max. Также вы используете n, а не n1.
Используйте в будущем поэтапную отладку.
0
afycso
0 / 0 / 0
Регистрация: 20.11.2016
Сообщений: 3
20.11.2016, 19:21  [ТС] 3
DmiMukh, а вы не могли бы сказать, что конкретно нужно поменять с памятью? Я не очень понимаю
0
DmiMukh
28 / 28 / 20
Регистрация: 14.11.2016
Сообщений: 112
21.11.2016, 09:18 4
C
1
void vvod (float *massiv, int n1, int m1);
замените на
C
1
void vvod (float *&massiv, int n1, int m1);
Только в прототипе и самой функции.
1
21.11.2016, 09:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2016, 09:18

Задача по двумерным массивам и функциям
Не получается это сделать: Заполнить квадратную матрицу случайными числами(функция). Найти среднее...

Задача по функциям как её сделать ?

Задача чисто по функциям ) Не могу никак розобраться
Используя логику создания массива клавиатурных строк, создать функцию addKeyboardLayout(alphabet)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru