Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Triall
3 / 3 / 1
Регистрация: 16.02.2011
Сообщений: 68
#1

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

15.04.2013, 19:30. Просмотров 390. Ответов 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');
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2013, 19:30     Почему то пропускается условие
Посмотрите здесь:

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

Добавлено через 1 минуту
Цитата Сообщение от elivin Посмотреть сообщение
P.S. Код на языке C. Зачем using namespace std;?
Пробовал cin cout и забыл убрать.
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
15.04.2013, 19:46     Почему то пропускается условие #4
Приведи код с изменениями и вывод программы, когда пропускается
Triall
3 / 3 / 1
Регистрация: 16.02.2011
Сообщений: 68
15.04.2013, 19:49  [ТС]     Почему то пропускается условие #5
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');
}
Вот где в программе пропускается условие
Миниатюры
Почему то пропускается условие  
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
15.04.2013, 20:03     Почему то пропускается условие #6
Так и думал. 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 строку
Triall
3 / 3 / 1
Регистрация: 16.02.2011
Сообщений: 68
15.04.2013, 20:06  [ТС]     Почему то пропускается условие #7
elivin, Был замечен )
При добавлении ретурна, программа завершается
Миниатюры
Почему то пропускается условие  
Triall
3 / 3 / 1
Регистрация: 16.02.2011
Сообщений: 68
15.04.2013, 20:07  [ТС]     Почему то пропускается условие #8
elivin, В программе нужно выбрать, записывать в файл или просто выводить на екран... И если условие не выполняется, то просто должно выводиться на экран без записи в файл
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
15.04.2013, 20:13     Почему то пропускается условие #9
У тебя условие проверяется, но, судя по скринам, не выполняется строка:
C
1
scanf("%c", &fl);
Поменяй %c на %s
Triall
3 / 3 / 1
Регистрация: 16.02.2011
Сообщений: 68
15.04.2013, 20:14  [ТС]     Почему то пропускается условие #10
elivin, Да ты же бог ))))
Помогло ))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2013, 20:24     Почему то пропускается условие
Еще ссылки по теме:

Почему не работает условие в While? C++
C++ Почему не проверяется условие else if
Пропускается ввод C++
Почему всегда выполняется условие? C++
Почему-то программа игнорирует условие if/else C++

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

Или воспользуйтесь поиском по форуму:
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
15.04.2013, 20:24     Почему то пропускается условие #11
Triall, я около года писал на C. Но последние пару лет переполз на плюсы, так что не заметил сразу...
Yandex
Объявления
15.04.2013, 20:24     Почему то пропускается условие
Ответ Создать тему
Опции темы

Текущее время: 22:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru