Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
5 / 5 / 6
Регистрация: 04.12.2011
Сообщений: 178
1

не могу закончить программу. основу (как я считаю) я написала. доработать не получается

05.04.2012, 13:26. Просмотров 1402. Ответов 21
Метки нет (Все метки)


уменьшить элементы столбца на величину их индекса. вывести на экран сумму нечетных элементов в столбце. промежуточная функция: выполнить действия для столбцов, у которых первый элемент не равен нулю.


ошибка : error C2109: для индекса требуется массив или указатель

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
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
// создать двумерный массив 3х4
//ввод элементов
void massiv()
{ int mas[3][4];
    for (int i=0; i<3; i++)
    for (int j=0; j<4; j++)
    {
        scanf("%d",&mas[i][j]);
    }
}
 
//уменьшить элементы столбца на величину их индекса
void umenshenie (int mas)
{for (int i1=0; i1<3; i1++)
    mas[i1]=mas[i1]-i1;
}
//количество нечетных элементов
void kol(int mas)
{int i, s;
s=0;
for (int i=0; i<3; i++)
    for (int j=0; j<4; j++)
    {
        if (mas[i][j]%2!=0)
            s+=mas[i][j];
    }
    printf("%d\n",s);
}
 
void f(int mas) 
{for (int j=0; j<4; j++)
    if (mas[0][j]!=0) 
    {
        umenshenie(mas);
        kol(mas);
    }
}
void print(int mas) 
{
    int i,j;
    for (i=0;i<3;i++)
    for (j=0; j<4; j++)
        printf("%d",mas[i][j]);
    puts("\n");
}
 
int main()
{int mas;
    massiv();
    f(mas);
    print(mas);
    getch();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2012, 13:26
Ответы с готовыми решениями:

Я написала программу, но не получается. в чем моя ошибка?
даны целые числа x..x,y..y. вычислите u: u=\begin{cases}\sum_{i=1}^{20}x_i^2 &amp; \text{, if }...

Не могу закончить программу, требуется совет, как вывести среднее значение
#include&lt;iostream&gt; using namespace std; double SrZnachenie(int **mas, int n, int m) { double...

Написала программу на Haskell, не могу найти ошибку
Добрый вечер! На Haskell нужно было написать простую программку.(только начали учить), написала.Но...

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

21
86 / 81 / 28
Регистрация: 02.08.2011
Сообщений: 335
05.04.2012, 13:37 2
int mas; - не массив
0
5 / 5 / 6
Регистрация: 04.12.2011
Сообщений: 178
05.04.2012, 13:40  [ТС] 3
а как мне изменить программу чтобы работала она?
0
59 / 59 / 7
Регистрация: 16.05.2010
Сообщений: 632
05.04.2012, 13:59 4
Цитата Сообщение от ГузелькаС Посмотреть сообщение
void umenshenie (int mas)
{for (int i1=0; i1<3; i1++)
* * mas[i1]=mas[i1]-i1;
}
вы передаёте функции целое число и хотите,чтоб она считала это массивом целых чисел
создайте класс,каждый объект которого имеет массив целочисленных значений и функции для обработки этого массива
и ещё,передавайте функции не число,а указатель на массив
0
5 / 5 / 6
Регистрация: 04.12.2011
Сообщений: 178
05.04.2012, 14:02  [ТС] 5
для меня это очень сложно(((
я не понимаю((
0
59 / 59 / 7
Регистрация: 16.05.2010
Сообщений: 632
05.04.2012, 15:22 6
сейчас напишу

Добавлено через 1 час 11 минут
а каковы размеры массива в программе?а то у меня проблемы возниклис динамическим выделением памяти для двухмерного массива
0
5 / 5 / 6
Регистрация: 04.12.2011
Сообщений: 178
05.04.2012, 15:23  [ТС] 7
размер не указан. произвольный.
0
59 / 59 / 7
Регистрация: 16.05.2010
Сообщений: 632
05.04.2012, 15:26 8
теперь уже у меня вопрос,как решить проблему с записью чисел в массив
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef ARRAY_H
#define ARRAY_H
 
class Array
{
public:
    Array(int = 10,int = 10);//
    ~Array();
    void enter();
    void diff(int);
    int calc();
    void print();
private:
    int size1;
    int size2;
    int **p;
};
 
#endif
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
#include<new>//определения функций
#include<iostream>
using std::cin;
using std::cout;
 
 
#include "Array.h"
 
Array::Array(int SIZE1,int SIZE2)
{
    size1 = SIZE1;//количество строк
    size2 = SIZE2;//количество столбцов
    int **p = new int*[size1];//создаём массив из указателей на int
    for(int i = 0;i < size1;i++)
        p[i] = new int[size2];//каждому указателю из массива присваивается адрес на массив целых чисел
 
    for(int i = 0;i < size1;i++)
    {
        int *temp = p[i];
        for(int j = 0;j < size2;j++)
        {
            temp[j] = 0;
        }
    }
}
 
Array::~Array()//деструктор,уничтожает объекты класса
{
    for(int i = 0;i < size1;i++)
        delete []p[i];
 
    delete []p;
 
}
 
void Array::enter()//ввод значений
{
    cout << "Enter the values:\n";
    for(int i = 0;i < size1;i++)
    {
        int *temp = p[i];
        for(int j = 0;j < size2;j++)
        {
            cin >> temp[j];
        }
    }
}
 
void Array::diff(int column)//вводим номер столбца и его элементы уменьшаются
{
    for(int i = 0;i < size2;i++)
        p[i][column] = p[i][column] - i; 
}
 
int Array::calc()//считаем сумму нечётных элементов
{
    int total = 0;
    for(int i = 0;i < size1;i++)
    {
        for(int j = 0;j < size2;j++)
        {
            if(p[i][j] %2 != 0)
                total +=p[i][j];
        }
    }
    return total;
}
 
void Array::print()//вывод значений
{
    for(int i = 0;i < size1;i++)
    {
        for(int j = 0;j < size2;j++)
        {
            cout << p[i][j] << ' ';
        }
        cout << '\n';
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "Array.h"
 
#include <iostream>
using std::cout;
using std::endl;
 
int main()
{
    Array a(2,3);
 
    a.enter();
    cout << endl;
 
    a.diff(2);
    a.print();
 
    int b = a.calc();
    cout << b << endl;
    a.print();
 
    return 0;
}
0
265 / 254 / 23
Регистрация: 04.04.2012
Сообщений: 546
05.04.2012, 15:51 9
Госспади, зачем же класс?
Просто динамический 2-х мерный массив.
C++
1
2
3
int* *mas=new int*[n];
for(int i=0; i<n; i++)
mas[i]=new int[m];
Массив n на m

Добавлено через 16 минут
C++
1
2
3
4
5
6
7
8
9
//ввод элементов
void massiv()//А как вы будете использовать mas вне этой функции? Вы же его не вывели!
{ int mas[3][4];
    for (int i=0; i<3; i++)
    for (int j=0; j<4; j++)
    {
        scanf("%d",&mas[i][j]);
    }
}
Меняем на
C++
1
2
3
4
5
6
7
8
9
10
11
int* *massiv()
{
int* *mas=new int*[3];//Обьявление двухмерного динамического массива -- и не надо классов
for(int i=0; i<3; i++)
{
mas[i]=new int[4];
for(int j=0; j<4; j++)
scanf("%d",&mas[i][j]);
}
return mas;//А здесь -- вывели
}
C++
1
2
3
4
5
//уменьшить элементы столбца на величину их индекса
void umenshenie (int mas)//mas -- указатель, и имеет тип int* *
{for (int i1=0; i1<3; i1++)
    mas[i1]=mas[i1]-i1;//mas[i1] -- указатель на i1 столбец, и имеет тип int*
}
Исправляем на
C++
1
2
3
4
5
void umenshenie (int* *mas)
{for (int i=0; i<3; i++)//Поверьте, можете спокойно использовать i
for(int j=0; j<4; j++)
    mas[i][j]=mas[i][j]-i;
}
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
//количество нечетных элементов
void kol(int mas)//и здесь тоже int* *mas
{int i, s;
s=0;
for (int i=0; i<3; i++)
    for (int j=0; j<4; j++)
    {
        if (mas[i][j]%2!=0)
            s+=mas[i][j];//Раз уж количество, то может их будем по единичке считать? Т.е. s+=1?
    }
    printf("%d\n",s);
}
 
void f(int mas)//и здесь тоже int* *mas
{
for (int j=0; j<4; j++)
    if (mas[0][j]!=0) 
    {
        umenshenie(mas);
        kol(mas);
    }
}
void print(int mas) //и здесь тоже int* *mas
{
    int i,j;
    for (i=0;i<3;i++)
    for (j=0; j<4; j++)
        printf("%d",mas[i][j]);
    puts("\n");
}
C++
1
2
3
4
5
6
7
8
int main()
{int mas;
    massiv();
    f(mas);
    print(mas);
    getch();
    return 0;
}
А здесь поменяем на
C++
1
2
3
4
5
6
7
8
int main()
{
    int* *mas=massiv();
    f(mas);
    print(mas);
    getch();
    return 0;
}
1
1173 / 886 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
05.04.2012, 16:06 10
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <cmath>
#include <ctime>
 
/*
 *
 */
int **initArray( const int size ) {         // создать массив size x size
    int **tmp = new int*[ size ];
 
    for ( int i = 0; i < size; i++ ) {
        tmp[ i ] = new int[ size ];
 
        for ( int j = 0; j < size; j++ )
            tmp[ i ][ j ] = 0;
    }
 
    return tmp;
}
 
void randArray( int *const *const a, const int size ) {  //заполнить массив size x size случайными числами
    for ( int i = 0; i < size; i++ )
        for ( int j = 0; j < size; j++ )
            a[ i ][ j ] = std::rand() % 100;
}
 
void outputArray( const int *const *const a, const int size ) {  //вывод массива на экран
    for ( int i = 0; i < size; i++ ) {
        for ( int j = 0; j < size; j++ )
            std::cout << std::setw( 2 ) << a[ i ][ j ] << ' ';
 
        std::cout << std::endl;
    }
}
 
void decreaseCol( int *const *const a, const int size ) { //уменьшение элементов столбцов на их индекс
    for ( int i = 0; i < size; i++ )
        for ( int j = 0; j < size; j++ )
            a[ i ][ j ] -= j;
}
 
int main() {
    const int size = 10;
    int **array = initArray( size );
    int sum = 0;
 
    std::srand( std::time( 0 ));
 
    randArray( array, size );
 
    std::cout << "Array:" << std::endl;
    outputArray( array, size );
 
    std::cout << "\nArray after decreasing elements of columns:" << std::endl;
    decreaseCol( array, size );
    outputArray( array, size );
 
    std::cout << "\nThe sum of odd elements of columns: " << std::endl;
    for ( int j = 0; j < size; j++ ) {
        sum = 0;
 
        for ( int i = 0; i < size; i++ )
            if ( array[ i ][ j ] % 2 )
                sum += array[ i ][ j ];
 
        std::cout << std::setw( 2 ) << j + 1 << " column: " << sum << std::endl;
    }
 
    return 0;
}
Единственно не понял до конца, что за промежуточная функция, и какие действия она должна производить?
0
5 / 5 / 6
Регистрация: 04.12.2011
Сообщений: 178
05.04.2012, 16:10  [ТС] 11
промежуточная функция должна выбрать именно те столбцы, где первый элемент не равен нулю.


мне бы программу на СИ (а не на СИ++) ((((
0
59 / 59 / 7
Регистрация: 16.05.2010
Сообщений: 632
05.04.2012, 16:29 12
Цитата Сообщение от UFO94 Посмотреть сообщение
printf("%d",mas[i][j]);
не выведешь так,у меня ошибка была

Добавлено через 2 минуты
Цитата Сообщение от Toshkarik Посмотреть сообщение
for ( int j = 0; j < size; j++ )
* * * * * * a[ i ][ j ] = std::rand() % 100;
у меня не получалось так занести данные в массив,если знаете где ошибка в моём коде(моё сообщение немного выше),то подскажите пожалуйста где я ошибся
0
1173 / 886 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
05.04.2012, 16:37 13
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
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
 
/*
 *
 */
int **initArray( const int size ) {         // создать массив size x size
    int **tmp = ( int** ) calloc( size, sizeof( int* ));
 
    for ( int i = 0; i < size; i++ )
        tmp[ i ] = ( int* ) calloc( size, sizeof( int ));
 
    return tmp;
}
 
void randArray( int **a, const int size ) {  //заполнить массив size x size случайными числами
    for ( int i = 0; i < size; i++ )
        for ( int j = 0; j < size; j++ )
            a[ i ][ j ] = rand() % 100;
}
 
void outputArray( const int *const *const a, const int size ) {  //вывод массива на экран
    for ( int i = 0; i < size; i++ ) {
        for ( int j = 0; j < size; j++ )
            printf( "%2i ", a[ i ][ j ] );
 
        printf( "\n" );
    }
}
 
void decreaseCol( int *const *const a, const int size ) { //уменьшение элементов столбцов на их индекс
    for ( int j = 0; j < size; j++ )
        if ( a[ 0 ][ j ] )
            for ( int i = 0; i < size; i++ )
                a[ i ][ j ] -= j;
}
 
int main() {
    const int size = 10;
    int **array = initArray( size );
    int sum = 0, i = 0, j = 0;
 
    srand( time( 0 ));
 
    randArray( array, size );
 
    printf( "Array:\n" );
    outputArray( array, size );
 
    printf("\nArray after decrease elements of columns:\n" );
    decreaseCol( array, size );
    outputArray( array, size );
 
    printf( "\nThe sum of odd elements of columns: \n" );
    for ( j = 0; j < size; j++ ) {
        if ( array[ 0 ][ j ] ) {
            for ( i = 0; i < size; i++ )
                if ( array[ i ][ j ] % 2 )
                    sum += array[ i ][ j ];
 
            printf( "%i column: %i\n", j + 1, sum );
            sum = 0;
        }
    }
 
    return 0;
}
Переделал под C.

Добавлено через 3 минуты
alexey31415, зачем вы в конструкторе опять объявляете **P? В конструкторе нужно инициализировать а не объявлять новые элементы данных класса.

Цитата Сообщение от alexey31415 Посмотреть сообщение
int **p = new int*[size1];//создаём массив из указателей на int
на
C++
1
**p = new int*[size1];
0
137 / 137 / 39
Регистрация: 26.02.2011
Сообщений: 545
05.04.2012, 16:46 14
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
//#include "stdafx.h"//oa?aou "//" anee a aea?oae caioneaou(?aceiiiaioe?iaaou)
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
int main()
{
   int n,i,j,m;
   while(!fflush(stdin)&&printf("Vvedite kolichestvo strok = ")&&!scanf("%i",&m));
   while(!fflush(stdin)&&printf("Vvedite kolichestvo stolbcov = ")&&!scanf("%i",&n));
   int **A = (int**)malloc(m*sizeof(int));
   for(i=0; i<m;i++)
   {
          A[i] = (int*)malloc(n*sizeof(int));
   }
   printf("\nVvedite elementy matrix A\n\n");
   for(i=0;i<m;i++)
   {
          for(j=0;j<n;j++)
          {
                      while(!fflush(stdin)&&printf("A[%d][%d] = ",i+1,j+1)&&!scanf("%i",&A[i][j]));
          }
   }
   system("cls");
   printf("\tMatrix A\n\n");
   for(i=0;i<m;i++)
   {
          for(j=0;j<n;j++)
          {
                      printf("%d ",A[i][j]);
          }
          printf("\n");
   }
//=======================================================================//
  printf("\nSumma nechetnyh elements v stolbcah matrix A\n\n");
   for(j=0;j<n;j++)
   {
          int sum=0;
          for(i=0;i<m;i++)
          {
                          if(A[i][j]%2!=0)
                          {
                                    sum+=A[i][j];
                          }
                      
          }
             printf("%d ",sum);
   }
//=======================================================================//
 
 
   printf("\n\n\tMatrix sort. A\n\n");
   for(i=0;i<m;i++)
   {
          for(j=0;j<n;j++)
          
                         A[i][j]=A[i][j]-(j+1);
          
   }
   for(i=0;i<m;i++)
   {
          for(j=0;j<n;j++)
          {
                      printf("%d ",A[i][j]);
          }
          printf("\n");
   }
//=======================================================================//
   for(i=0; i<m;i++)
   {
           free(A[i]);
   }
   free(A);
   getch();
   return 0;
}
Добавлено через 1 минуту
Блин сидел голову ломал аж самого зацепило ввожу матрицу 1 2 3 4 5 6 7 8 9
мне выдает 0 0 0 3 3 3 6 6 6 я думал косяк,дальше сижу думаю,проходит час-полтора,потом уже хотел забить опять считаю,и о невероятно это же верно было
0
59 / 59 / 7
Регистрация: 16.05.2010
Сообщений: 632
05.04.2012, 16:56 15
Цитата Сообщение от Toshkarik Посмотреть сообщение
**p = new int*[size1];
когда пытаюсь откомпилировать программу пишет мне error C2440: =: невозможно преобразовать "int **" в "int"
0
1173 / 886 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
05.04.2012, 16:57 16
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
#include <conio.h>
Это не стандартная библиотека, и в некоторых компиляторах ее просто нет. Советую заменить ее функции на аналогичные из стандартных библиотек
0
137 / 137 / 39
Регистрация: 26.02.2011
Сообщений: 545
05.04.2012, 16:57 17
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
//#include "stdafx.h"//разкоментируй если на виджуал студио будешь запускать
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
void umenschenie(int **A,int m,int n,int i,int j)
{
   printf("\n\n\tMatrix sort. A\n\n");
   for(i=0;i<m;i++)
   {
          for(j=0;j<n;j++)
          
                         A[i][j]=A[i][j]-(j+1);
          
   }
   for(i=0;i<m;i++)
   {
          for(j=0;j<n;j++)
          {
                      printf("%d ",A[i][j]);
          }
          printf("\n");
   }
   return;  
}
 
void sum_elements(int **A,int m,int n,int i,int j)
{
   printf("\nSumma nechetnyh elements v stolbcah matrix A\n\n");
   for(j=0;j<n;j++)
   {
          int sum=0;
          for(i=0;i<m;i++)
          {
                          if(A[i][j]%2!=0)
                          {
                                    sum+=A[i][j];
                          }
                      
          }
             printf("%d ",sum);
   }
   return;
}
 
int** vvod(int **A,int m,int n,int i,int j)
{
    printf("\nVvedite elementy matrix A\n\n");
   for(i=0;i<m;i++)
   {
          for(j=0;j<n;j++)
          {
                      while(!fflush(stdin)&&printf("A[%d][%d] = ",i+1,j+1)&&!scanf("%i",&A[i][j]));
          }
   }
   system("cls");
   printf("\tMatrix A\n\n");
   for(i=0;i<m;i++)
   {
          for(j=0;j<n;j++)
          {
                      printf("%d ",A[i][j]);
          }
          printf("\n");
   }
    return A;
}
 
void freemem(int **A,int m,int n,int i)
{
     for(i=0; i<m;i++)
     {
           free(A[i]);
     }
     free(A);
     return;
}
 
int** newpam(int **A,int m,int n,int i)
{
      A = (int**)malloc(m*sizeof(int));
      for(i=0; i<m;i++)
      {
          A[i] = (int*)malloc(n*sizeof(int));
      }   
      return A;
}
 
int main()
{
   int n,i,j,m;
   while(!fflush(stdin)&&printf("Vvedite kolichestvo strok = ")&&!scanf("%i",&m));
   while(!fflush(stdin)&&printf("Vvedite kolichestvo stolbcov = ")&&!scanf("%i",&n));
   int **A=newpam(A,m,n,i); 
   vvod(A,m,n,i,j);
   sum_elements(A,m,n,i,j);
   umenschenie(A,m,n,i,j);
   freemem (A,m,n,i); 
   getch();
   return 0;
}
С функциями
Этот будет работать,проверяй
0
1173 / 886 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
05.04.2012, 17:01 18
alexey31415,
C++
1
2
3
4
5
6
7
8
9
10
Array::Array(int SIZE1,int SIZE2)
        : size1( SIZE1 ), size2( SIZE2 ), p( new int*[ size1 ])
{
    for(int i = 0;i < size1;i++) {
        p[i] = new int[size2];//каждому указателю из массива присваивается адрес на массив целых чисел
 
        for ( int j = 0; j < size2; j++ )
            p[ i ][ j ] = 0;
    }
}
В предыдущем примере я поспешил, и неправильно написал, нужно было изменить на
C++
1
p = new int*[size1];
а не на
C++
1
**p = new int*[size1];
0
59 / 59 / 7
Регистрация: 16.05.2010
Сообщений: 632
05.04.2012, 17:07 19
Цитата Сообщение от Toshkarik Посмотреть сообщение
нужно было изменить на
спасибо,но я уже заметил сам,а теперь вопрос,почему программа запускается,я ввожу значения,а когда должна выполняться функция calc(),то программа прерывается
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
#include<new>
#include<iostream>
using std::cin;
using std::cout;
 
 
#include "Array.h"
 
Array::Array(int SIZE1,int SIZE2)
{
    size1 = SIZE1;//количество строк
    size2 = SIZE2;//количество столбцов
    p = new int*[size1];//создаём массив из указателей на int
    for(int i = 0;i < size1;i++)
    {
        p[i] = new int[size2];//каждому указателю из массива присваивается адрес на массив целых чисел
 
    for(int j = 0;j < size1;j++)
        p[i][j] = 0;
 
    }
}
 
Array::~Array()//деструктор,уничтожает объекты класса
{
    for(int i = 0;i < size1;i++)
        delete []p[i];
 
    delete []p;
 
}
 
void Array::enter()//ввод значений
{
    cout << "Enter the values:\n";
    for(int i = 0;i < size1;i++)
    {
        for(int j = 0;j < size2;j++)
        {
            cin >> p[i][j];
        }
    }
}
 
void Array::diff(int column)//вводим номер столбца и его элементы уменьшаются
{
    for(int i = 0;i < size2;i++)
        p[i][column] = p[i][column] - i; 
}
 
int Array::calc()//считаем сумму нечётных элементов
{
    int total = 0;
    for(int i = 0;i < size1;i++)
    {
        for(int j = 0;j < size2;j++)
        {
            if(p[i][j] %2 != 0)
                total +=p[i][j];
        }
    }
    return total;
}
 
void Array::print()//вывод значений
{
    for(int i = 0;i < size1;i++)
    {
        for(int j = 0;j < size2;j++)
        {
            cout << p[i][j] << ' ';
        }
        cout << '\n';
    }
}
0
1173 / 886 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
05.04.2012, 17:15 20
Цитата Сообщение от alexey31415 Посмотреть сообщение
for(int i = 0;i < size2;i++)
* * * * p[i][column] = p[i][column] - i;
Из за этого. Счет строк у вас идет до size1 а не до size2. Поменяйте на size1 и будет нормально работать. Только я не проверял достоверность результатов, проверите сами
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2012, 17:15

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Вывод информации. Не получается закончить программу в паскале
Всем привет. Задача такая: Составить программу для вычисления длин высот треугольника, у которого...

Не могу закончить программу
Сделал часть программы,но не получается никак сделать 2 часть: Выведите список студентов, которым...

Не могу закончить программу
Есть код авторизации для подключения к базе данных, необходимо его закончить, потому как при вводе...

Не могу закончить программу на Delphi
Программа: ввести строку символов, которая заканчивается точкой. Каждый нечетный символ &quot;q&quot;...

Никак не могу закончить программу
Никак не могу закончить программу, есть косинус он вычисляется в определенном интервале, но еще...

Написала программу, а когда нажимаю на кнопку вычислить произведение, выдаёт рандомные числа, не могу понять в
Написала программу, а когда нажимаю на кнопку вычислить произведение, выдаёт рандомные числа, не...


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

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

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