Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Triall
3 / 3 / 3
Регистрация: 16.02.2011
Сообщений: 68

Почему то пропускается условие

15.04.2013, 19:30. Показов 1305. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В программе нужно указать записывать в файл или нет. Вроде бы все правильно, но почему то пропускается условие вот сдесь
C++
1
if(fl == 'y' || fl == 'Y') flag = true;
Вот весь код
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
#include <stdio.h>
#include <math.h>
 
using namespace std;
 
void vvid(int *, char);
void maks_min(int *, int *, int *);
void OutPut(int *, char);
void in_file(int *, int *, int *);
void matrix_file(int *, char);
 
FILE *file_out;
bool flag = false;
int n;
 
int main(void)
{
    char file_name[30], fl;
    printf("Vvedit rozmir matrutsi :");
    scanf("%d", &n);
    printf("Zapusyvatu v fail? (y/n)");
    scanf("%c", &fl);
    if(fl == 'y' || fl == 'Y') flag = true;
    if(flag)
    {
        printf("Vvedit imia failu :");
        scanf("%s", &file_name);
        file_out = fopen(file_name, "w");
        if(file_name == NULL)
        {
            printf("Fail ne vidkrutui dlia zapusy");
            return 1;
        }
    }
    int a[n][n], b[n][n], c[n][n];
    vvid(*a, 'A');
    vvid(*b,'B');
    vvid(*c, 'C');
    if(flag) in_file(*a, *b, *c);
    maks_min(*a, *b, *c);
    return 0;
}
 
void vvid(int *matrix, char matr_name)
{
    printf("Vvedit matrutsi %c", matr_name);
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            scanf("%d", &matrix[i*n+j]);
    printf("\n");
    printf("\n");
}
 
void maks_min(int *a, int *b, int *c)
{
    int amax = fabs(a[0]), bmax = fabs(b[0]), cmax = fabs(c[0]);
    for (int i = 1; i < n; i++)
        for (int j = 0; j < n; j++)
        {
            if (fabs(a[i*n+j]) > amax) amax = fabs(a[i*n+j]);
            if (fabs(b[i*n+j]) > bmax) bmax = fabs(b[i*n+j]);
            if (fabs(c[i*n+j]) > cmax) cmax = fabs(c[i*n+j]);
        }
    if (amax < bmax && amax < cmax)
        return OutPut(a, 'A');
    else if (bmax < amax && bmax < cmax)
        return OutPut(b, 'B');
    else
        return OutPut(c, 'C');
}
 
void OutPut(int *matrix, char name)
{
    printf("Naimensha norma y matrtsi %c", name);
    if(flag)
    {
        fprintf(file_out,"Naimensha norma y matrtsi %c", name);
        matrix_file(matrix, name);
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            printf("%4d", matrix[i*n+j]);
        printf("\n");
    }
}
 
void matrix_file(int *matrix, char name)
{
    fprintf(file_out, "Matrutsia %c :\n", name);
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            fprintf(file_out, "%4d", matrix[i*n+j]);
    }
}
 
void in_file(int *a, int *b, int *c)
{
    fprintf(file_out, "Rozmiz matruts = %d", n);
    matrix_file(a, 'A');
    matrix_file(b, 'B');
    matrix_file(c, 'C');
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.04.2013, 19:30
Ответы с готовыми решениями:

Почему пропускается getline?
//функция ввода вопросов void create () { string question; int key; ofstream potok(&quot;question.bin&quot;,...

Почему пропускается цикл
пишу сюда чтобы не плодить темы. помогите понять тугоумному почему в моем коде пропускается цикл for #include &lt;iostream&gt; ...

После 1-го цикла пропускается ввод adres, почему так происходит?
#include&lt;iostream&gt; #include &lt;cstring&gt; using namespace std; struct anketa{ char fio; char adres; double year; ...

10
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
15.04.2013, 19:42
Может так:
C
1
2
3
4
if(fl == 'y' || fl == 'Y')
{
   //Определяем файл
} else return 0;
P.S. Код на языке C. Зачем using namespace std;?
0
 Аватар для Triall
3 / 3 / 3
Регистрация: 16.02.2011
Сообщений: 68
15.04.2013, 19:45  [ТС]
elivin, Все равно пропускается...

Добавлено через 1 минуту
Цитата Сообщение от elivin Посмотреть сообщение
P.S. Код на языке C. Зачем using namespace std;?
Пробовал cin cout и забыл убрать.
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
15.04.2013, 19:46
Приведи код с изменениями и вывод программы, когда пропускается
1
 Аватар для Triall
3 / 3 / 3
Регистрация: 16.02.2011
Сообщений: 68
15.04.2013, 19:49  [ТС]
elivin, Код на данный момент такой :
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
#include <stdio.h>
#include <math.h>
 
void vvid(int *, char);
void maks_min(int *, int *, int *);
void OutPut(int *, char);
void in_file(int *, int *, int *);
void matrix_file(int *, char);
 
FILE *file_out;
bool flag = false;
int n;
 
int main(void)
{
    char file_name[30], fl;
    printf("Vvedit rozmir matrutsi : ");
    scanf("%d", &n);
    printf("Zapusyvatu v fail? (y/n): ");
    scanf("%c", &fl);
    if(fl == 'y' || fl == 'Y')
    {
        printf("Vvedit imia failu :");
        scanf("%s", &file_name);
        file_out = fopen(file_name, "w");
        flag = true;
        if(file_name == NULL)
        {
            printf("Fail ne vidkrutui dlia zapusy");
            return 1;
        }
    }
    if(flag)
    {
        printf("Vvedit imia failu :");
        scanf("%s", &file_name);
        file_out = fopen(file_name, "w");
        if(file_name == NULL)
        {
            printf("Fail ne vidkrutui dlia zapusy");
            return 1;
        }
    }
    int a[n][n], b[n][n], c[n][n];
    vvid(*a, 'A');
    vvid(*b,'B');
    vvid(*c, 'C');
    if(flag) in_file(*a, *b, *c);
    maks_min(*a, *b, *c);
    return 0;
}
 
void vvid(int *matrix, char matr_name)
{
    printf("Vvedit matrutsi %c", matr_name);
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            scanf("%d", &matrix[i*n+j]);
    printf("\n");
    printf("\n");
}
 
void maks_min(int *a, int *b, int *c)
{
    int amax = fabs(a[0]), bmax = fabs(b[0]), cmax = fabs(c[0]);
    for (int i = 1; i < n; i++)
        for (int j = 0; j < n; j++)
        {
            if (fabs(a[i*n+j]) > amax) amax = fabs(a[i*n+j]);
            if (fabs(b[i*n+j]) > bmax) bmax = fabs(b[i*n+j]);
            if (fabs(c[i*n+j]) > cmax) cmax = fabs(c[i*n+j]);
        }
    if (amax < bmax && amax < cmax)
        return OutPut(a, 'A');
    else if (bmax < amax && bmax < cmax)
        return OutPut(b, 'B');
    else
        return OutPut(c, 'C');
}
 
void OutPut(int *matrix, char name)
{
    printf("Naimensha norma y matrtsi %c", name);
    if(flag)
    {
        fprintf(file_out,"Naimensha norma y matrtsi %c", name);
        matrix_file(matrix, name);
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            printf("%4d", matrix[i*n+j]);
        printf("\n");
    }
}
 
void matrix_file(int *matrix, char name)
{
    fprintf(file_out, "Matrutsia %c :\n", name);
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            fprintf(file_out, "%4d", matrix[i*n+j]);
    }
}
 
void in_file(int *a, int *b, int *c)
{
    fprintf(file_out, "Rozmiz matruts = %d", n);
    matrix_file(a, 'A');
    matrix_file(b, 'B');
    matrix_file(c, 'C');
}
Вот где в программе пропускается условие
Миниатюры
Почему то пропускается условие  
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
15.04.2013, 20:03
Так и думал. return не был замечен
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
int main(void)
{
    char file_name[30], fl;
    printf("Vvedit rozmir matrutsi : ");
    scanf("%d", &n);
    printf("Zapusyvatu v fail? (y/n): ");
    scanf("%c", &fl);
    if(fl == 'y' || fl == 'Y')
    {
        printf("Vvedit imia failu :");
        scanf("%s", &file_name);
        file_out = fopen(file_name, "w");
        flag = true;
        if(file_name == NULL)
        {
            printf("Fail ne vidkrutui dlia zapusy");
            return 1;
        }
    } else return 0;
    int a[n][n], b[n][n], c[n][n];
    vvid(*a, 'A');
    vvid(*b,'B');
    vvid(*c, 'C');
    if(flag) in_file(*a, *b, *c);
    maks_min(*a, *b, *c);
    return 0;
}
Обрати внимание на 19 строку
1
 Аватар для Triall
3 / 3 / 3
Регистрация: 16.02.2011
Сообщений: 68
15.04.2013, 20:06  [ТС]
elivin, Был замечен )
При добавлении ретурна, программа завершается
Миниатюры
Почему то пропускается условие  
0
 Аватар для Triall
3 / 3 / 3
Регистрация: 16.02.2011
Сообщений: 68
15.04.2013, 20:07  [ТС]
elivin, В программе нужно выбрать, записывать в файл или просто выводить на екран... И если условие не выполняется, то просто должно выводиться на экран без записи в файл
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
15.04.2013, 20:13
У тебя условие проверяется, но, судя по скринам, не выполняется строка:
C
1
scanf("%c", &fl);
Поменяй %c на %s
1
 Аватар для Triall
3 / 3 / 3
Регистрация: 16.02.2011
Сообщений: 68
15.04.2013, 20:14  [ТС]
elivin, Да ты же бог ))))
Помогло ))
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
15.04.2013, 20:24
Triall, я около года писал на C. Но последние пару лет переполз на плюсы, так что не заметил сразу...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.04.2013, 20:24
Помогаю со студенческими работами здесь

Скажите пожалуйста, что не так: Почему в выделенной части кода пропускается ввод фамилии?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; #include &lt;cmath&gt; #include &lt;Windows.h&gt; ...

Почему не проверяется условие else if
Что то я в упор не вижу почему не проверяет условие else if #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int...

Почему не работает условие в While?
#include &lt;iostream&gt; using namespace std; void main () { int n=12, NS = 2, answer, answer1, answerFinish, a,b; while (n&lt;=1) {...

Не срабатывает условие. Почему?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) { ...

Почему неправильно проверяется условие?
Что не так? где ошибка?? например исходная матрица matrix такая: 01001 01111 00110 00100 10000 а матрицу clabel...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru