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

Исправте ошибки в коде программы(их два варианта). - C++

Восстановить пароль Регистрация
 
riper3061
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 4
28.12.2010, 20:10     Исправте ошибки в коде программы(их два варианта). #1
Мне срочнонужно до четверга(БУДУ ОЧЕНЬ БЛАГОДАРЕН ТЕМ КТО СМОЖЕТ ПОМОЧЬ)

Вот условие:
Вычислить среднее арифметическое суммы элементов 2-ух матриц 3*4 и 2*5. Оформить в виде функций.

А вот первый вариант кода:

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
#include<iostream.h>
const int n=3,m=4;
const int o=2,p=5;
int ArrayA(int a[n][m],int n,int m);
int SumA(int a[n][m],int n,int m);
int ArrayB(int b[o][p],int o,int p);
int SumB(int b[o][p],int o,int p);
 
void main ()
{
   int a[n][m];
   int b[n][m];
   float Sa;
   ArrayA(a[n][m],n,m);
   SumA(a[n][m],n,m);
   ArrayB(b[][p],o,p);
   SumB(b[o][p],o,p);
   Sa=((SumA(a[n][m],n,m)+SumB(b[o][p],o,p))/2;
   cout<<"Sa="<<Sa<<endl;
}
 
int ArrayA(int a[n][m],int n,int m)
{
  int i,j;
  for(i=0;i<n;i++)
   for(j=o;j<m;j++)
      cin>>a[i][j];
  cout<<endl;
}
 
int SumA(int a[n][m],int n,int m)
{
  int S=0;
  int i,j;
  for(i=0;i<n;i++)
   for(j=o;j<m;j++)
       S=S+a[i][j];
  cout<<endl;
}
 
int ArrayB(int b[o][p],int o,int p)
{
  int i,j;
  for(i=0;i<o;i++)
   for(j=0;j<p;j++)
       cin>>b[i][j];
  cout<<endl;
}
 
int SumB(int b[o][p],int o,int p)
{
  int S=0;
  int i,j;
  for(i=0;i<o;i++)
   for(j=0;j<p;j++)
      S=S+b[i][j];
  cout<<endl;
}

А вот второй вариант кода(Эта программа работает но передает неправильно значения):

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
#include<iostream.h>
#include<conio.h>
const int n=3,m=4;
const int o=2,p=5;
void ArrayA(int [n][m]);
void ArrayB(int [o][p]);
void SumA(int [n][m]);
void SumB(int [o][p]);
 
void main ()
{
  int a[n][m];
  int b[o][p];
  int i, j;
  int S1, S2, Sa;
  ArrayA (a);
  ArrayB (b);
  SumA (a);
  SumB (b);
  Sa=(S1+S2)/2;
  cout<<"Sa="<<Sa<<endl;
}
 
void ArrayA(int a[n][m])
{
  cout<<" Vvedite I masiv:";
  for(int i=0;i<n;i++)
  for(int j=0;j<m;j++)
  cin>>a[i][j];
  cout<<endl;
}
 
void SumA(int a[n][m])
{
  int S1=0;
  for(int i=0;i<n;i++)
  for(int j=0;j<m;j++)
  S1=S1+a[i][j];
  cout<<endl;
}
 
void ArrayB(int b[o][p])
{
  cout<<" Vvedite II masiv:";
  for(int i=0;i<o;i++)
  for(int j=0;j<p;j++)
  cin>>b[i][j];
  cout<<endl;
}
 
void SumB(int b[o][p])
{
  int S2=0;
  for(int i=0;i<o;i++)
  for(int j=0;j<p;j++)
  S2=S2+b[i][j];
  cout<<endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2010, 20:10     Исправте ошибки в коде программы(их два варианта).
Посмотрите здесь:

Исправте ошибки, Пожалуйста!) C++
Ошибки в коде программы C++
Исправте ошибки C++
исправте ошибки пожалуйста C++
Исправте ошибки в программе C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
28.12.2010, 21:33     Исправте ошибки в коде программы(их два варианта). #2
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
#include<iostream>
 
using namespace std;
 
const int N=3,M=4;
const int O=2,P=5;
void Input(int A[][5], int n, int m);
int Sum(int A[][5], int n, int m);
 
 
int main ()
{
   int A[5][5];
   int B[5][5];
   double Rez;
   Input(A,N,M);
   for(int i =0; i<N; i++)
   {
       for(int j=0; j<M; j++)
           cout << A[i][j] << "    ";
       cout << endl;
   }
   Input(B,O,P);
   for(int i =0; i<O; i++)
   {
       for(int j=0; j<P; j++)
           cout << B[i][j] << "    ";
       cout << endl;
   }
   Rez = (Sum(A,N,M) + Sum(B,O,P))/2.0;
   cout << "Result = " << Rez << endl;
   system("PAUSE");
   return 0;
}
 
void Input(int A[][5], int n, int m)
{
  for(int i=0;i<n;i++)
   for(int j=0;j<m;j++)
      cin >> A[i][j];
}
 
int Sum(int A[][5], int n, int m)
{
  int S =0;
  int i,j;
  for(i=0;i<n;i++)
   for(j=0;j<m;j++)
       S=S+A[i][j];
  return S;
}
riper3061
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 4
28.12.2010, 22:03  [ТС]     Исправте ошибки в коде программы(их два варианта). #3
Спасибо,но для меня много что не понятно например system("PAUSE");
и я так понял оформленно не ввиде функций ??
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
28.12.2010, 23:31     Исправте ошибки в коде программы(их два варианта). #4
Цитата Сообщение от riper3061 Посмотреть сообщение
для меня много что не понятно
Читайте

Цитата Сообщение от riper3061 Посмотреть сообщение
я так понял оформленно не ввиде функций ??
Ну да. А Input и Sum это так, для прикола написал, загогулины всякие.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
28.12.2010, 23:42     Исправте ошибки в коде программы(их два варианта). #5
Цитата Сообщение от riper3061 Посмотреть сообщение
system("PAUSE");
это для того чтобы программа после открытия сразу не закрылась..т.к. программа создана для того что бы скажем считать,она считает и закрывается,а систем пауз оставляет открытой прогу
Цитата Сообщение от riper3061 Посмотреть сообщение
я так понял оформленно не ввиде функций
в коде RUSya82 есть функции

Добавлено через 3 минуты
RUSya82, почему бы не написать 3ю функцию out?

Добавлено через 2 минуты
Цитата Сообщение от RUSya82 Посмотреть сообщение
int A[5][5];
Цитата Сообщение от RUSya82 Посмотреть сообщение
const int N=3,M=4;
что это такое?
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
28.12.2010, 23:52     Исправте ошибки в коде программы(их два варианта). #6
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
#include<iostream>
 
using namespace std;
 
const int N=3,M=4;
const int O=2,P=5;
void Input(int A[][5], int n, int m);
int Sum(int A[][5], int n, int m);
void Out(int A[][5], int n, int m);
 
int main ()
{
   int A[5][5];
   int B[5][5];
   double Rez;
   Input(A,N,M);
   Out(A,N,M);
   Input(B,O,P);
   Out(B,O,P);
   Rez = (Sum(A,N,M) + Sum(B,O,P))/2.0;
   cout << "Result = " << Rez << endl;
   system("PAUSE");
   return 0;
}
 
 void Out(int A[][5], int n, int m)
{
  for(int i =0; i<n; i++)
   {
       for(int j=0; j<m; j++)
           cout << A[i][j] << "    ";
       cout << endl;
   }
}
 
void Input(int A[][5], int n, int m)
{
  for(int i=0;i<n;i++)
   for(int j=0;j<m;j++)
      cin >> A[i][j];
}
 
int Sum(int A[][5], int n, int m)
{
  int S =0;
  int i,j;
  for(i=0;i<n;i++)
   for(j=0;j<m;j++)
       S=S+A[i][j];
  return S;
}
Добавлено через 5 минут
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
что это такое?
это, доведенная до рабочего состояния программа
riper3061,
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
28.12.2010, 23:54     Исправте ошибки в коде программы(их два варианта). #7
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
#include "iostream"
#include "string"
#include "stdlib.h"
#include "time.h"
#include "math.h"
using namespace std;
 
const int n=3,m=4;
const int a=2,b=5;
void inp(int x[][m],int y[][b]);
int calc(int x[][m]);
int calc1(int y[][b]);
void out(int x[][m],int y[][b],int k);
 
void main()
{
    int x[n][m];
    int y[a][b];
    inp(x,y);
    int s=calc(x);
    int s1=calc1(y);
    int k=(s+s1)/2;
    out(x,y,k);
}
 
void inp(int x[][m],int y[][b])
{
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            x[i][j]=rand()%10;
    for(int i=0;i<a;i++)
        for(int j=0;j<b;j++)
            y[i][j]=rand()%10;
}
 
void out(int x[][m],int y[][b],int k)
{
    cout<<"MATRIX X"<<endl;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
            cout<<x[i][j]<<" ";
        cout<<endl;
    }
 
    cout<<endl<<"MATRIX Y"<<endl;
    for(int i=0;i<a;i++)
    {
        for(int j=0;j<b;j++)
            cout<<y[i][j]<<" ";
        cout<<endl;
    }
    cout<<endl<<"K="<<k<<endl;
 
}
 
int calc(int x[][m])
{
    int s=0;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            s+=x[i][j];
    return s;
}
 
int calc1(int y[][b])
{
    int s=0;
    for(int i=0;i<a;i++)
        for(int j=0;j<b;j++)
            s+=y[i][j];
    return s;
}
Добавлено через 59 секунд
Цитата Сообщение от RUSya82 Посмотреть сообщение
int A[5][5]; int B[5][5];
почему тут это если

Цитата Сообщение от RUSya82 Посмотреть сообщение
const int N=3,M=4; const int O=2,P=5;
??
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
29.12.2010, 00:02     Исправте ошибки в коде программы(их два варианта). #8
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
int calc(int x[][m]); int calc1(int y[][b]);
просто в моем варианте для этого используется одна функция. И ничего страшного, что для этого выделяется немногим больше памяти. Мы работаем только с нужными ячейками, остальные не изменяются, не учавствуют в расчетах и не выводятся. И результат верен. Если б массивов было 10, что ж теперь для каждого отдельную функцию писать.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
29.12.2010, 00:06     Исправте ошибки в коде программы(их два варианта). #9
RUSya82, нет,для этого есть оптимальный вариант...
если функция должна считать среднее арифм. 10 матриц то я напишу функцию так
C++
1
void calc(int x[][n],int y[][n],int z[][n]......int p[psize]);
где p-массив,где в каждой ячейке хранится сумма каждой матрицы соотвественно...а psize=кол.ву матрц=10.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
29.12.2010, 00:15     Исправте ошибки в коде программы(их два варианта). #10
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
RUSya82, нет,для этого есть оптимальный вариант...
если функция должна считать среднее арифм. 10 матриц то я напишу функцию так
C++
1
void calc(int x[][n],int y[][n],int z[][n]......int p[psize]);
где p-массив,где в каждой ячейке хранится сумма каждой матрицы соотвественно...а psize=кол.ву матрц=10.
Это Ваше право. Я бы так не написал. Просто я не понимаю, разве в моём решении таится какой то криминал? Я же объяснил, что программа работает, просто выделяется чуть поболее памяти.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
29.12.2010, 00:19     Исправте ошибки в коде программы(их два варианта). #11
Цитата Сообщение от RUSya82 Посмотреть сообщение
разве в моём решении таится какой то криминал?
разве я такое сказал?Я просто написал что так для меня лучше...и все...мало ли,может кто то прочтет мой метод и ему тож понравится...просто стиль и все.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
29.12.2010, 00:26     Исправте ошибки в коде программы(их два варианта). #12
Так ведь я не против совсем. Только ЗА. Просто воспринял не так.
riper3061
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 4
29.12.2010, 16:25  [ТС]     Исправте ошибки в коде программы(их два варианта). #13
Цитата Сообщение от RUSya82 Посмотреть сообщение
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
#include<iostream>
 
using namespace std;
 
const int N=3,M=4;
const int O=2,P=5;
void Input(int A[][5], int n, int m);
int Sum(int A[][5], int n, int m);
void Out(int A[][5], int n, int m);
 
int main ()
{
   int A[5][5];
   int B[5][5];
   double Rez;
   Input(A,N,M);
   Out(A,N,M);
   Input(B,O,P);
   Out(B,O,P);
   Rez = (Sum(A,N,M) + Sum(B,O,P))/2.0;
   cout << "Result = " << Rez << endl;
   system("PAUSE");
   return 0;
}
 
 void Out(int A[][5], int n, int m)
{
  for(int i =0; i<n; i++)
   {
       for(int j=0; j<m; j++)
           cout << A[i][j] << "    ";
       cout << endl;
   }
}
 
void Input(int A[][5], int n, int m)
{
  for(int i=0;i<n;i++)
   for(int j=0;j<m;j++)
      cin >> A[i][j];
}
 
int Sum(int A[][5], int n, int m)
{
  int S =0;
  int i,j;
  for(i=0;i<n;i++)
   for(j=0;j<m;j++)
       S=S+A[i][j];
  return S;
}
Добавлено через 5 минут

это, доведенная до рабочего состояния программа
riper3061,

Спасибо огромное,я в твоей проге разобрался и остановился на ней.Только не понятно как передаётся значения матрицы в саму программу а тоснее вот эта часть
const int N=3,M=4;
const int O=2,P=5;
void Input(int A[][5], int n, int m);
int Sum(int A[][5], int n, int m);
void Out(int A[][5], int n, int m);

Почему в A[][5] пустое место и 5 стоит ??

а вот сдесь
int A[5][5];
int B[5][5];
стоят пятёрки ??
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
29.12.2010, 19:32     Исправте ошибки в коде программы(их два варианта). #14
Цитата Сообщение от riper3061 Посмотреть сообщение
Почему в A[][5] пустое место и 5 стоит ??
При передаче матрицы как параметр,записывается так: a[][n],x[][5],matrix[][size] и т.д.
а при создании обязательно надо написать a[5][5],что бы компилятор понял какую именно матрицу надо взять...
когда по параметру передают массив одномерный,записывают так f(int y[]).
Тоже самое с матрицой(двумерным массивом) но кол-во столбцов НАДО писать.
riper3061
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 4
29.12.2010, 21:32  [ТС]     Исправте ошибки в коде программы(их два варианта). #15
спасибо за отзывчивость
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
30.12.2010, 06:53     Исправте ошибки в коде программы(их два варианта). #16
Цитата Сообщение от riper3061 Посмотреть сообщение
я в твоей проге разобрался и остановился на ней.
Это похвально
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2010, 07:07     Исправте ошибки в коде программы(их два варианта).
Еще ссылки по теме:

C++ исправте ошибки в программе
C++ Исправте ошибки в программе
C++ Добрый день! Исправте, пожалуйста. Дан листинг программы, где заданы два массива

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.12.2010, 07:07     Исправте ошибки в коде программы(их два варианта). #17
Цитата Сообщение от riper3061 Посмотреть сообщение
int ArrayA(int a[n][m],int n,int m); int SumA(int a[n][m],int n,int m); int ArrayB(int b[o][p],int o,int p); int SumB(int b[o][p],int o,int p);
Это не ошибка, но от половиныэтих функций можно избавиться: назначение функции с параметрами - одинаковые операции с разными данными, так что двух первых уже достаточно, меняй фактические параметры и никаких гвоздёв.
Цитата Сообщение от riper3061 Посмотреть сообщение
int b[n][m];
А вот это ошибка: b[3][4], а надо b[2][5]. b[3][5] подойдёт, хотя и избыточно. Но можно умудрится так скомпилить, что в b[3][4] массив не влезет, при том, что здесь элементов больше, чем надо.

Добавлено через 2 минуты
Цитата Сообщение от riper3061 Посмотреть сообщение
cout<<endl;
В функции суммирования это не нужно.

Добавлено через 1 минуту
Цитата Сообщение от riper3061 Посмотреть сообщение
S=S+a[i][j];
это не ошибка, но лучше S+=a[i][j];
Yandex
Объявления
30.12.2010, 07:07     Исправте ошибки в коде программы(их два варианта).
Ответ Создать тему
Опции темы

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