0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 4
1

Не могу найти ошибку в коде, двумерные и одномерные массивы

05.06.2014, 19:42. Показов 1103. Ответов 4
Метки нет (Все метки)

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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# include <iostream.h>
# include <iomanip.h>
# include <conio.h>
# include <fstream.h>
# define m 10
# define n 5
# define k 50
 
       float a[m][n],  x[k],  y[k];   // Les variables globales
           
            // La fonction pour l’entrée d’une matrice par le clavier
 
           void inmatrc (  )
{
      short i, j;
 
   cout<<setw(20)<<" "<<"Faites entrer une matrice"<<endl;
            for (i=0; i<m; i++)
            for (j=0; j<n; j++)
               cin>>a[i][j];
}
                      
                      // La fonction pour l’entrée d’une matrice d’un fichier externe          
                      
                      void inmatrf (char h[])
{
      short i, j;
      fstream f;
 
      f.open(h,ios::in);
               for (i=0; i<m; i++)
            for (j=0; j<n; j++)
        f>>a[i][j];
      f.close();
}
           
           // La fonction pour feare sortir une matrice sur l’écran  
         
           void outmatr (  )
{
     short i, j;
       cout<<setiosflags(ios::showpoint);
       for (i=0; i<m; i++)
     {
               cout<<setw(15)<<" ";
         for (j=0; j<n; j++)
               cout<<setprecision(2)<<setw(6)<<a[i][j]<<" ";
         cout<<endl;
     }
}
    
          // La fonction pour feare sortir une matrice dans un fichier externe
 
         void outmatrf (fstream & f1)
{
     short i, j;
         f1<<setiosflags(ios::showpoint);
         for (i=0; i<m; i++) 
        {
                     f1<<setw(15)<<" ";          
                        for (j=0; j<n; j++)
                           f1<<setprecision(2)<<setw(7)<<a[i][j]<<" ";
                           f1<<endl;
              }  
}
 
            // La fonction pour la création de la série des nombres x[] des elements des                               
           lignes d’une matrice //         
 
                  void seriex()
 
{
             short i, j, s=0 ;
             
                  for (i=0; i<m; i++)
                  for (j=0; j<n; j++)
                     { 
                            x[s]=a[i][j]; 
                              s++;
                     }
}
                  
                   // La foncion pour la création de la série des nombres y[] des éléments   
                   des colonnes d’une matrice
 
                         void seriey() 
        
{
             short i, j, s=0;
              
                  for (j=0; j<n; j++) 
                  for (i=0; i<m; i++)
                      {
                            y[s]=a[i][j]; 
                             s++;
                      }
}
         
                 // La fonction pour feare sortir une série des nomdres sur l’écran
 
                 void outserie (float z[k])
         
{
              short i; 
                    cout<<setiosflags(ios::showpoint); 
                    for(i=0; i<k; i++)
                      cout<<setprecision(2)<<setw(6)<<z[i]<<" "; 
}
 
              //La fonction pour feare sortir une série dans un fichier externe 
 
          void outserief (float z[k], fstream & f1)
           {
               short i; 
                    f1<<setiosflags(ios::showpoint);
                      for(i=0; i<k; i++)
                    f1<<setprecision(2)<<setw(5)<<z[i]<<" "; 
           }
 
                   //La fonction pour le rangemant en accroissrment une série des nombres
 
                  void ranga()
           {
                short i, F, q;
                float R; 
                     q=k-1; 
                b1:  F=0; 
                  for (i=0; i<q; i++)
                     if (x[i]>x[i+1])      
                     {
                               R=x[i];
                     x[i]=x[i+1];
                     x[i+1]=R; 
                        F=1; 
                     }
                    if (F==1)
                       {
                             q--;
                             goto b1; 
                       }
                     }    
           }
 
                //La fonction pour le rangemant en décroissement une série des nombres 
 
               void rangd()
           {
               short i, F, q;
               float R; 
                        q=k-1; 
                 b1:    F=0; 
                    for (i=0; i<q; i++)
                      if (y[i]<y[i+1])
                        {
                                      R=y[i]; 
                           y[i]=y[i+1];
                           y[i+1]=R; 
                                F=1; 
                        }
                         if (F==1)
                         { 
                                  q--; 
                                  goto b1; 
                         }
          }
 
             //La fonction principale 
 
          void main ()
          {
               fstream f1; 
               char ch1[]="c:\\pdc\\var17\\ismat.txt";
               char ch2[]="c:\\pdc\\var17\\rez17.txt";                         
              f1.open(ch2,ios::out);
                inmatrf(); //L'entrée d'une matrise de départ 
               f1<<setw(25)<<""<<"La metrice de depart"<<endl;
                outmatr(f1);
                seriex(); //La création du tadleau x[]
               f1<<endl<<setw(25)<<""<<"Le tableau x[] non-range"<<endl;
                outserief(x,f1);
                ranga(); //Le rangemment en accroissement la série x[]
               f1<<endl<<setw(25)<<""<<"Le tableau x[] range"<<endl;
                outserief(x,f1);
                seriey(); //La création du tableau x[]
               f1<<endl<<setw(25)<<""<<"Le tableau y[] non-range"<<endl; 
                outserief(y,f1);
                rangd(); //Le rangement en décroissement la série y[]
               f1<<endl<<setw(25)<<""<<"Le tableau y[] range"<<endl;
                outserief(y,f1);
               f1.close();
          }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2014, 19:42
Ответы с готовыми решениями:

Двумерные массивы. Найти ошибку в коде
Происходит аварийное завершение программы, не могу найти причину. Вроде бы все правильно но не...

Одномерные массивы. Не могу найти ошибку
не могу найти ошибку! как и где используется счетчик s у второго цикла (не нужен?), если это сдвиг...

Найти ошибки в коде. Двумерные массивы
В двумерном массиве все элементы, стоящие выше максимального элемента, заменить на минимальный...

Табулирование функции и поиск данных. Одномерные массивы. Двумерные массивы
Вычислить сумму первых четырех отрицательных элементов. В соответствии с п. 5.16 правил...

4
Модератор
Эксперт С++
12437 / 10003 / 6022
Регистрация: 18.12.2011
Сообщений: 26,772
05.06.2014, 19:51 2
Лучший ответ Сообщение было отмечено Baulgar как решение

Решение

Ошибок море.
После форматирования и исправления:
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
const int n=5,m=5,k=5;
float a[m][n],  x[k],  y[k];   // Les variables globales
 
// La fonction pour l’entrйe d’une matrice par le clavier
 
void inmatrc (  )
{
    short i, j;
 
    cout<<setw(20)<<" "<<"Faites entrer une matrice"<<endl;
    for (i=0; i<m; i++)
        for (j=0; j<n; j++)
            cin>>a[i][j];
}
 
// La fonction pour l’entrйe d’une matrice d’un fichier externe         
 
void inmatrf (char h[])
{
    short i, j;
    fstream f;
 
    f.open(h,ios::in);
    for (i=0; i<m; i++)
        for (j=0; j<n; j++)
            f>>a[i][j];
    f.close();
}
 
// La fonction pour feare sortir une matrice sur l’йcran 
 
void outmatr (  )
{
    short i, j;
    cout<<setiosflags(ios::showpoint);
    for (i=0; i<m; i++)
    {
        cout<<setw(15)<<" ";
        for (j=0; j<n; j++)
            cout<<setprecision(2)<<setw(6)<<a[i][j]<<" ";
        cout<<endl;
    }
}
 
// La fonction pour feare sortir une matrice dans un fichier externe
 
void outmatrf (fstream & f1)
{
    short i, j;
    f1<<setiosflags(ios::showpoint);
    for (i=0; i<m; i++) 
    {
        f1<<setw(15)<<" ";          
        for (j=0; j<n; j++)
            f1<<setprecision(2)<<setw(7)<<a[i][j]<<" ";
        f1<<endl;
    }  
}
 
// La fonction pour la crйation de la sйrie des nombres x[] des elements des                               
//lignes d’une matrice //         
 
void seriex()
 
{
    short i, j, s=0 ;
 
    for (i=0; i<m; i++)
        for (j=0; j<n; j++)
        { 
            x[s]=a[i][j]; 
            s++;
        }
}
 
// La foncion pour la crйation de la sйrie des nombres y[] des йlйments   
//des colonnes d’une matrice
 
void seriey() 
 
{
    short i, j, s=0;
 
    for (j=0; j<n; j++) 
        for (i=0; i<m; i++)
        {
            y[s]=a[i][j]; 
            s++;
        }
}
 
// La fonction pour feare sortir une sйrie des nomdres sur l’йcran
 
void outserie (float z[k])
 
{
    short i; 
    cout<<setiosflags(ios::showpoint); 
    for(i=0; i<k; i++)
        cout<<setprecision(2)<<setw(6)<<z[i]<<" "; 
}
 
//La fonction pour feare sortir une sйrie dans un fichier externe 
 
void outserief (float z[k], fstream & f1)
{
    short i; 
    f1<<setiosflags(ios::showpoint);
    for(i=0; i<k; i++)
        f1<<setprecision(2)<<setw(5)<<z[i]<<" "; 
}
 
//La fonction pour le rangemant en accroissrment une sйrie des nombres
void ranga()
{
    short i, F, q;
    float R; 
    q=k-1; 
b1:  F=0; 
    for (i=0; i<q; i++)
        if (x[i]>x[i+1])      
        {
            R=x[i];
            x[i]=x[i+1];
            x[i+1]=R; 
            F=1; 
        }
        if (F==1)
        {
            q--;
            goto b1; 
        }
}    
//La fonction pour le rangemant en dйcroissement une sйrie des nombres 
void rangd()
{
    short i, F, q;
    float R; 
    q=k-1; 
b1:    F=0; 
    for (i=0; i<q; i++)
        if (y[i]<y[i+1])
        {
            R=y[i]; 
            y[i]=y[i+1];
            y[i+1]=R; 
            F=1; 
        }
        if (F==1)
        { 
            q--; 
            goto b1; 
        }
}
 
 //La fonction principale 
void main ()
{
    fstream f1; 
    char ch1[]="c:\\pdc\\var17\\ismat.txt";
    char ch2[]="c:\\pdc\\var17\\rez17.txt";                         
    f1.open(ch2,ios::out);
    inmatrf(ch1); //L'entrйe d'une matrise de dйpart 
    f1<<setw(25)<<""<<"La metrice de depart"<<endl;
    outmatr();
    seriex(); //La crйation du tadleau x[]
    f1<<endl<<setw(25)<<""<<"Le tableau x[] non-range"<<endl;
    outserief(x,f1);
    ranga(); //Le rangemment en accroissement la sйrie x[]
    f1<<endl<<setw(25)<<""<<"Le tableau x[] range"<<endl;
    outserief(x,f1);
    seriey(); //La crйation du tableau x[]
    f1<<endl<<setw(25)<<""<<"Le tableau y[] non-range"<<endl; 
    outserief(y,f1);
    rangd(); //Le rangement en dйcroissement la sйrie y[]
    f1<<endl<<setw(25)<<""<<"Le tableau y[] range"<<endl;
    outserief(y,f1);
    f1.close();
}
1
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 4
05.06.2014, 20:22  [ТС] 3
Прошу извинить за настойчивость. Преподаватель проверял блок-схему и программу не нашел ошибок.По заданию надо выполнить эти условия:

1. образовать ряд чисел X из элементов строк и ряд чисел Y из элементов столбцов заданной матрицы A(M ×N), M = 10, N = 5;
2.сортировать ряд X по возрастанию, а ряд Y по убыванию;
3. построить диаграмму чисел несортированного ряда X в среде MS Excel.
Тип и значения элементов исходной матрицы A(M×N) принять на свое усмотрение.

При разработке программы следует предусмотреть функции:
– ввода матрицы из внешнего файла,
– ввода матрицы с клавиатуры,
– вывода матрицы во внешний файл,
– вывода матрицы на экран,
– вывода ряда чисел во внешний файл,
– вывода ряда чисел на экран,
– образования ряда по пункту 1 (ряд X),
– образования ряда по пункту 1 (ряд Y),
– сортировки ряда чисел по возрастанию,
– сортировки ряда чисел по убыванию.

В качестве результата вычислений представить:
– исходную матрицу А,
– созданный ряд чисел X,
– сортированный ряд чисел X,
– созданный ряд чисел Y,
– сортированный ряд чисел Y,

Видимо я ничему не научился.Или чего-то не понимаю.
0
Модератор
Эксперт С++
12437 / 10003 / 6022
Регистрация: 18.12.2011
Сообщений: 26,772
05.06.2014, 21:26 4
Ошибки были синтаксические, а не логические.
Без компилятора их увидеть трудно.
0
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 4
05.06.2014, 23:38  [ТС] 5
Понятно.Осталась тогда только 1 проблемка.На экран выводится только созданная матрица.Использую Microsoft Visual C++ 2008 Express Edition может надо сменить компилятор?

Добавлено через 1 час 54 минуты
Уже разобрался.Благодарю за уделённое время.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2014, 23:38
Помогаю со студенческими работами здесь

Задача на двумерные массивы (найти ошибку)
На строчке где, по-идее, программа должна делать замену Dev-C++ пишет ошибку. Помогите...

нужно найти ошибку в программе с++ на двумерные массивы
void task_1(int** A, int M ) { int i, j; double sum=0; bool flag=0; printf(&quot;\n1 задание:...

Двумерные и одномерные массивы
7. Дана матрица размера 5 x 10. Удалить строку (столбец), содержащую мини-мальный (максимальный)...

Одномерные и Двумерные массивы
1) Переписать положительные элементы главной диагонали матрицы B(n x m ) в одномерный массив. 2) В...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru