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

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

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

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

15.04.2013, 19:30. Просмотров 400. Ответов 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     Почему то пропускается условие
Посмотрите здесь:

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

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

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

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

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

почему не работает условие когда х=3 - C++
#include &lt;iostream.h&gt; #include &lt;math.h&gt; int main() { double z11,x,p=0.85,q=2.15; cout&lt;&lt;&quot;Vvedi x: &quot;; cin&gt;&gt;x; ...

Почему-то программа игнорирует условие if/else - C++
Дана задача: Даны два массива: А и B (M и N вводятся с клавиатуры). Необходимо создать третий массив минимально возможного размера, в...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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     Почему то пропускается условие
Еще ссылки по теме:

Почему всегда выполняется условие? - C++
Здравствуйте, имеется код int main(int argc,char *argv) { clrscr(); if(argv != &quot;aaa&quot;) { printf(&quot;Error 2&quot;); ...

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

Объясните пожалуйста, почему не работает условие! - C++
Начал изучать классы, хочу понять как работать с приватными переменнами! Есть такой вот метод: char* student::returnName() { ...

Не срабатывает условие в цикле while не могу понять почему - C++
При решении задачки в которой необходимо сделать игру Однорукий Бандит, наткнулся при тестировании что одно из условий цикла while не...

do while - почему выполняется цикл, даже если условие истина? - C++
Подскажите пожалуйста, пишу программу вопрос/ответ. При не правильным вводе ответа, программа должна выводить сообщение об ошибке. ...


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

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

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