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

Неправильная проверка условия в if - C++

Восстановить пароль Регистрация
 
frwlnte
Сообщений: n/a
15.06.2014, 21:42     Неправильная проверка условия в if #1
Дана задача:
Считать из файла, либо ввести вручную, матрицу вещественных чисел 4 на 5 с 4-мя цифрами после десятичной точки, вывести её на экран, записать в файл. Далее многократно выполнить поиск максимумов и минимумов в указанном столбце, записать их во второй файл. Наконец, считать второй файл и найти наибольший максимум и наименьший минимум, записать их во второй файл.

Проблема заключается в том, что если при первом вводе вместо "с" ввести какой-либо другой символ, программа никак на это не отреагирует. При вводе комбинации клавиш показывает первую строчку массива, состоящую из нулей, после чего консоль закрывается.
Кстати, если иду через считывание из файла, то сталкиваюсь с чем-то похожим: консоль показывает "b_max= " и закрывается.
Самое парадоксальное кроется в том, что когда я её только написал, она работала правильно.

Текст моей программы:
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
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <conio.h>
#include <iomanip>
using namespace std;
int const a = 4;
int const b = 5;
int const h = 60;
int const k = 1;
void search(double A[a][b]);
void rtl(double B[h][k]);
int main() {
    double A[a][b];
    char c;
    
    cout << "c - from file, any key - manually  ";
    cin >> c;
    
    if(c=='c') {
                  fstream f1("C:\\1.txt");
                  for(int i=0; i<a; i++) {
                          for(int j=0; j<b; j++) {
                                  f1 >> A[i][j]; } }
                  f1.close();}
    else {
            for(int i=0; i<a; i++) {
             for(int j=0; j<b; j++) {
                     cin >> A[i][j]; }
                  cout << endl; }
                  cout << endl << endl;}
                  
    for(int i=0; i<a; i++) {
    for(int j=0; j<b; j++) {
    cout << "A["<< i <<"]["<< j <<"]= " << fixed << setprecision(4) << A[i][j] << " "; } 
    cout << endl; }
         
     ofstream f2("2.txt", ios::app);
     for(int i=0; i < a; i++) { for(int j=0; j<b; j++) {
     f2 << A[i][j] << "  "; } f2 << endl; }
     f2.close(); 
         
    search (A);
         
    system("pause");
    return 0;
}     
void search(double A[a][b]) {
     int numb;
     double max, min, B[h][k];
     char g;
     START:
     cout << "enter number of column (from 0 to 4)  ";
     cin >> numb; 
     cout << endl;
     if(numb >= 0 && numb <=4) {
           max = min = A[0][numb];
           for(int i=0; i<a; i++) {
                            if(max < A[i][numb]) max = A[i][numb]; 
                            else if(min > A[i][numb]) min = A[i][numb];}
                            cout << "max= "<<  fixed << setprecision(4) << max<< endl;
                            cout << "min= "<<  fixed << setprecision(4) << min << endl;
                            ofstream f3("3.txt", ios::app);
                            f3 << "max= "<<  fixed << setprecision(4) << max<<" " << "min=  "<<  fixed << setprecision(4) << min << endl;
                            f3.close();
           }
     else goto START; 
     
     cout << "g - repeat, any key - continue ";
     cin >> g;
     if(g=='g') goto START;
     
     rtl(B);
}
void rtl(double B[h][k]) {
     double  b_max, s_min;
     fstream f4("3.txt");
     for (int i=0; i<h; i++) {
         for(int j=0; j<k; j++) { f4 >> B[i][j];}}
         f4.close();
         b_max = s_min = B[0][0];
      for (int i=0; i<h; i++) {
         for(int j=0; j<k; j++) { 
                 if(b_max < B[i][j]) { b_max = B[i][j];}
                 else if(s_min > B[i][j]) { s_min = B[i][j];} }}
      cout << endl << "b_max= "<< b_max <<  endl;
      cout <<  "s_min= "<< s_min;          
      ofstream f5("3.txt", ios::app);
      f5 << "b_max= "<<  fixed << setprecision(4) << b_max<< endl << "s_min=  " << fixed << setprecision(4) << s_min << endl;
      f5.close();        
           }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2014, 21:42     Неправильная проверка условия в if
Посмотрите здесь:

Проверка условия существования треугольника C++
C++ Проверка условия без if
C++ Проблема с кодом программы - не работает проверка условия
C++ В каком случае проверка условия выполняется быстрее?
C++ Неправильная проверка
C++ Проверка условия
Двумерные массивы. Проверка условия после выполнения расчетов C++
C++ Проверка условия в цикле for

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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