С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
stimka321
4 / 4 / 2
Регистрация: 29.09.2013
Сообщений: 40
1

Функции в Си

21.11.2014, 23:40. Просмотров 850. Ответов 9
Метки нет (Все метки)

Написал программу, которая должна была выполнять действия приведённые в меню. При выполнении программы выходит какая-то "ересь". Вот код
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
//lab_func.h
#include<stdio.h>
#include<locale.h>
#include<string.h>
 
int a, b, x[10][10];
 
int menu()
{
    int w;
    printf("\n Меню: \n");
    printf("1. Ввести новый массив\n");
    printf("2. Уменьшение элементов столбца\n");
    //2. Уменьшение элементов столбца в два раза, номер которого совпадает с номером строки, в которой все элементы равны нулю
    printf("3. Вывод массива\n");
    printf("4. Поиск\n");
    printf("5. Выход\n");
    scanf_s("%d", &w);
    return w;
}
 
int m_vvod(int x[10][10], int a1, int b1)
{
    int i, j;
    for (i = 0; i < a1; i++)
    for (j = 0; j < b1; j++)
        printf("Введите элемент [%d,%d]\n", i + 1, j + 1);
    scanf_s("%d", &x[i][j]);
    return 0;
}
 
int exe1(int x[10][10])
{
    int i, j, k, p;
    for (i = 0; i < a; i++)
    {
        k = 0;
        for (j = 0; j < b; j++)
        if (x[i][j] == 0) k++;
        if (k == b)
        {
            p = i; break;
        }
    }
    j = p;
    return 0;
}
 
int m_vivod(int x[10][10])
{
    int i, j;
    printf("\n");
    for (i = 0; i < a; i++)
    {
        for (j = 0; j < b; j++)
            printf("%d ", x[i][j]);
        printf("\n");
    }
    return 0;
}
 
int search(char str[100], int smbl)
{
    int count = 0;
    char *ptr;
    do
    {
        ptr = strchr(str, smbl);
        count++;
    } while (ptr != 0);
    return count;
}
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
#include<stdio.h>
#include<locale.h>
#include<string.h>
#include"lab_func.h"
 
int menu();
int m_vvod(int, int, int);
int exe1(int);
int m_vivod(int);
int search(char, int);
 
int main()
{
    setlocale(LC_ALL, "russian");
    while (1)
    {
        switch (menu())
        {
        case 1:
            printf("Введите количество строк и столбцов: \n");
            scanf_s("%d%d", &a, &b);
            m_vvod(x, a, b);
        case 2:
            exe1(x);
        case 3:
            m_vivod(x);
        case 4:
            char str[100];
            int smbl;
            printf("Введите строку");
            gets_s(str);
            printf("Введите символ для поиска");
            scanf_s("%s", &smbl);
            search(str, smbl);
        case 5:
            return 0;
        }
    }
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2014, 23:40
Ответы с готовыми решениями:

Функции. Как после одного возвратного значения функции отталкиваться от возврата другой функции
Написал код, в котором 2 функции одна возвращает стринговое значение, вторая...

excel. создать таблицу значение кусочно-непрерывной функции y на интервале [xmin; xmax] с шагом h, для расчета функции y используя логические функции

Какое значение возвращают функции (в частности, логические функции) по умолчанию в Лазарус?
Я наткнулся на одну неприятность. До сих пор я считал, что result в функциях...

Табулирование функции: рассчитать значение данной функции при изменении аргумента
Табулирование функции: рассчитать значение данной функции при изменении...

Delphi, визуальное программирование, функции, использование несколько объектов через функции
Здорово, ребята. Вот когда писал программку, возникла такая мысль - можно ли...

9
Kerry_Jr
Эксперт PHP
2211 / 2007 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
21.11.2014, 23:49 2
Цитата Сообщение от stimka321 Посмотреть сообщение
C++
1
2
3
4
for (i = 0; i < a1; i++)
for (j = 0; j < b1; j++)
    printf("Введите элемент [%d,%d]\n", i + 1, j + 1);
scanf_s("%d", &x[i][j]);
C++
1
2
3
4
5
6
for (i = 0; i < a1; i++)
for (j = 0; j < b1; j++)
{
    printf("Введите элемент [%d,%d]\n", i + 1, j + 1);
    scanf_s("%d", &x[i][j]);
}
Добавлено через 2 минуты
Цитата Сообщение от stimka321 Посмотреть сообщение
C++
1
2
3
4
5
int menu();
int m_vvod(int, int, int);
int exe1(int);
int m_vivod(int);
int search(char, int);
можно не писать, они уже объявлены в файле lab_func.h

Добавлено через 1 минуту
Цитата Сообщение от stimka321 Посмотреть сообщение
При выполнении программы выходит какая-то "ересь".
Выложите скрин ереси.
0
stimka321
4 / 4 / 2
Регистрация: 29.09.2013
Сообщений: 40
22.11.2014, 00:06  [ТС] 3
Функции в Си


Вот, что появляется сразу после того, как ввёл матрицу.
0
ValeryS
Модератор
7372 / 5573 / 707
Регистрация: 14.02.2011
Сообщений: 18,949
22.11.2014, 00:12 4
Цитата Сообщение от stimka321 Посмотреть сообщение
Вот, что появляется сразу после того, как ввёл матрицу.
не вижу криминала
что ввел то и получил
0
Kerry_Jr
Эксперт PHP
2211 / 2007 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
22.11.2014, 00:15 5
ValeryS, у него в потоке остается символ перевода строки, из-за чего потом ввод строки пролетает, как фанера над Парижем.
0
stimka321
4 / 4 / 2
Регистрация: 29.09.2013
Сообщений: 40
22.11.2014, 00:18  [ТС] 6
По идее: после того, как я ввёл матрицу должно появится меню. Но что-то идёт не так, и я не могу понять что.

Добавлено через 1 минуту
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
в потоке
Это где?
0
Kerry_Jr
Эксперт PHP
2211 / 2007 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
22.11.2014, 00:20 7
stimka321, после каждого scanf_s поставьте либо getchar(), либо _getch().
0
stimka321
4 / 4 / 2
Регистрация: 29.09.2013
Сообщений: 40
22.11.2014, 00:31  [ТС] 8
"Ересь" заключалась в том, что после того, как я выполнил первое действие(Ввод массива) оно выполняло сразу же все остальные, неправильно, и не понятно почему. Как мне от неё избавится?
0
Kerry_Jr
Эксперт PHP
2211 / 2007 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
22.11.2014, 00:39 9
Лучший ответ Сообщение было отмечено stimka321 как решение

Решение

stimka321, после case'ов break'и расставьте.
1
stimka321
4 / 4 / 2
Регистрация: 29.09.2013
Сообщений: 40
22.11.2014, 00:46  [ТС] 10
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
stimka321, после case'ов break'и расставьте.
Всё, проблема решена. Спасибо и извините за ваше потраченное время. Пойду ка я лучше по сплю, совсем крышняк едет
0
22.11.2014, 00:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2014, 00:46

Построить график функции и отметить точки пересечения функции с осями координат
Построить график функции при значении коэффициентов: а = 2, b = 3. Отметить...

Добавление функции, чтобы ее можно было вызывать с функции загрузки формы
Здравствуйте! Подскажите как правильно добавить функцию, чтоб ее можно было...

Найти минимальное значение функции на промежутке. Напечатать таблицу значений функции.
Найти минимальное значение функции Y=(Х)^1/2- cosХ на промежутке 3&lt;X&lt;9 с шагом...


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

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

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