С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
riper3061
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 4
#1

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

28.12.2010, 20:10. Просмотров 638. Ответов 16
Метки нет (Все метки)

Мне срочнонужно до четверга(БУДУ ОЧЕНЬ БЛАГОДАРЕН ТЕМ КТО СМОЖЕТ ПОМОЧЬ)

Вот условие:
Вычислить среднее арифметическое суммы элементов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2010, 20:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исправте ошибки в коде программы(их два варианта). (C++):

Добрый день! Исправте, пожалуйста. Дан листинг программы, где заданы два массива - C++
Здравствуйте! Помогите, пожалуйста. Дан листинг программы, где заданы два массива. Сделайте, пожалуйста, так, чтобы значения этих массивов...

Ошибки в коде программы - C++
Создать массив из 20 вещественных чисел.Определить, сколько из них больше своих &quot;соседей,&quot; т.е. предыдущего и последующего чисел. ...

Ошибки в коде программы) - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int main() { int n; int c = 0; cout « &quot;Razmer...

Найти ошибки в коде программы - C++
Объясните пожалуйста что за ошибка в программе? #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; const double...

Исправить ошибки в коде программы - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;complex&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) {double...

Исправте ошибки - C++
задача - Дано действительное число a. Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить a8 за 3 операции....

16
RUSya82
237 / 115 / 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;
}
0
riper3061
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 4
28.12.2010, 22:03  [ТС] #3
Спасибо,но для меня много что не понятно например system("PAUSE");
и я так понял оформленно не ввиде функций ??
0
RUSya82
237 / 115 / 3
Регистрация: 15.10.2010
Сообщений: 395
28.12.2010, 23:31 #4
Цитата Сообщение от riper3061 Посмотреть сообщение
для меня много что не понятно
Читайте

Цитата Сообщение от riper3061 Посмотреть сообщение
я так понял оформленно не ввиде функций ??
Ну да. А Input и Sum это так, для прикола написал, загогулины всякие.
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,342
Завершенные тесты: 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;
что это такое?
1
RUSya82
237 / 115 / 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,
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,342
Завершенные тесты: 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;
??
0
RUSya82
237 / 115 / 3
Регистрация: 15.10.2010
Сообщений: 395
29.12.2010, 00:02 #8
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
int calc(int x[][m]); int calc1(int y[][b]);
просто в моем варианте для этого используется одна функция. И ничего страшного, что для этого выделяется немногим больше памяти. Мы работаем только с нужными ячейками, остальные не изменяются, не учавствуют в расчетах и не выводятся. И результат верен. Если б массивов было 10, что ж теперь для каждого отдельную функцию писать.
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,342
Завершенные тесты: 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.
0
RUSya82
237 / 115 / 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.
Это Ваше право. Я бы так не написал. Просто я не понимаю, разве в моём решении таится какой то криминал? Я же объяснил, что программа работает, просто выделяется чуть поболее памяти.
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,342
Завершенные тесты: 1
29.12.2010, 00:19 #11
Цитата Сообщение от RUSya82 Посмотреть сообщение
разве в моём решении таится какой то криминал?
разве я такое сказал?Я просто написал что так для меня лучше...и все...мало ли,может кто то прочтет мой метод и ему тож понравится...просто стиль и все.
0
RUSya82
237 / 115 / 3
Регистрация: 15.10.2010
Сообщений: 395
29.12.2010, 00:26 #12
Так ведь я не против совсем. Только ЗА. Просто воспринял не так.
1
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];
стоят пятёрки ??
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,342
Завершенные тесты: 1
29.12.2010, 19:32 #14
Цитата Сообщение от riper3061 Посмотреть сообщение
Почему в A[][5] пустое место и 5 стоит ??
При передаче матрицы как параметр,записывается так: a[][n],x[][5],matrix[][size] и т.д.
а при создании обязательно надо написать a[5][5],что бы компилятор понял какую именно матрицу надо взять...
когда по параметру передают массив одномерный,записывают так f(int y[]).
Тоже самое с матрицой(двумерным массивом) но кол-во столбцов НАДО писать.
1
riper3061
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 4
29.12.2010, 21:32  [ТС] #15
спасибо за отзывчивость
0
29.12.2010, 21:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2010, 21:32
Привет! Вот еще темы с ответами:

Исправте ошибки в программе - C++
#include&lt;math.h&gt; #include&lt;stdio.h&gt; #include&lt;Windows.h&gt; int main(){ int x,y,z,n; for (int x=0;x&lt;=1000;x++); for (int...

Исправте ошибки, Пожалуйста!) - C++
нужно исправить код..помогите)) // перкуквр.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; ...

исправте ошибки пожалуйста - C++
Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по столбцам

Исправте ошибки в программе - C++
#pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused #include...


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

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

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