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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
bratishka-buka
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 63
#1

Пом Динамический - двумерный массив, не работает=( - C++

09.06.2009, 22:51. Просмотров 1666. Ответов 38
Метки нет (Все метки)

//---------------------------------------------------------------------------
// Дана целочисленная квадратная матрица. Определить сумму элементов
//в тех столбцах, которые не содержат отрицательных элементов.

#include <vcl.h>
#include <iomanip.h>
#include <iostream.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
int nrow,ncol;
cout<<"Vvedite kol-vo strok i stolbsov:"<<endl;
cin>>nrow>>ncol;
int j,i,z;
int **a=new int*[nrow];
for (i=0;i<nrow;i++) a[i]=new int[ncol];
cout<<"Vvedite elementi massiva:"<<endl;
for (i=0;i<nrow;i++)
for (j=0;j<ncol;j++) cin>>a[i][j];
for (i=0;i<nrow;i++){
for (j=0;i<ncol;j++) cout<<setw(4)<<a[i][j]<<" ";
cout<<endl;}
int n_pos_el;
float s=0;
for (i=0;i<nrow;i++){
n_pos_el;
for (j=0;j<ncol;j++){
s+=a[j][j];
if (a[i][j]>0)n_pos_el++;
}
cout<<"Stroka: "<<i<<"kol-vo: "<<n_pos_el<<endl;
}
cout <<z;
return 0;
}
//---------------------------------------------------------------------------
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bratishka-buka
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 63
11.06.2009, 01:43  [ТС]     Пом Динамический - двумерный массив, не работает=( #21
ты не поверишь сток ошибок навылетало
ZVolodumur
49 / 49 / 3
Регистрация: 21.05.2009
Сообщений: 156
11.06.2009, 01:48     Пом Динамический - двумерный массив, не работает=( #22
C++
1
2
3
4
5
6
7
8
9
10
11
void sjat(int a[],int n)
        {
int i,j,r=0;
for (i=0;i<n; i++)
if (abs(a[i])>1)
        { r++;
        for(j=i; j<n-1; j++)
                a[j]=a[j+1];
       i--; a[n-r]=0;   }
 
        };
Пробуй так... Исправил. Должно пойти..
bratishka-buka
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 63
11.06.2009, 01:59  [ТС]     Пом Динамический - двумерный массив, не работает=( #23
я тебе наверно уже поднадоел, но просто ты как ни кто другой мне можешь помочь

Добавлено через 2 минуты 49 секунд
у мня такое ощущение что я тебе криво задание объяснил и ты его не понял или все норм?

Добавлено через 7 минут 47 секунд
Я тебе щас подробно пример кину:
Вот задачка,до преобразования в функию
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <stdio.h>
#include <math.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{ //кол-во элементов
int n;
n = 5;
//отрицательные элементы
int n1 = 0, np = 0;
//создаем новый массив
int m[5]={2,-1,0,3,-1};
int i;
//сумма элементов с нечетными номерами
int sum;
 
printf("Ishodnii massiv\n");
for (i = 0; i < n; i++)
        {
        printf("%i ",m[i]);
        };
printf("\n");
sum = m[0];
//нахождение суммы элементов с нечетными номерами
for (i = 2; i < n; i += 2)
        {
        sum += m[i];
        };
//определение номера первого отрицательного элемента
for (i = 0; i <= n; i++)
        {
        if (m[i] < 0)
                {
                n1 = i;
                break;
                };
        };
//определение номера последнего отрицательного элемента
for (i = n-1; i != 0; i--)
        {
        if (m[i] < 0)
                {
                np = i;
                break;
                };
        };
//проверка на существование границ отрицательных элементов
if ((np != 0) && (n1 != np))
        {
        int sum1 = 0;
        //нахождение суммы элементов между первым и последним отрицательным элементом
        for (i = n1+1; i < np; i++)
                {
                sum1 += m[i];
                };
        printf("Summa elementov mejdu pervim i poslednim otricatelnim elementami ravna %i\n",sum1);
        }
        else printf("V massive otsutstvuyut dva otricatel'nih elementa\n");
printf("Summa elementov s nechetnimi nomerami ravna %i\n",sum);
 
//удаление элементов массива по модулю больших единицы
for (i = 0; i < n; i++)
        {
        if (fabs(m[i]) <= 1)
                {
                int k;
                k = i;
                for (k = i; k < n; k++)
                        {
                        m[k] = m[k+1];
                        m[n] = 0;
                        };
                };
        };
//вывод массива после преобразования
for (i = 0; i < n; i++)
        {
        printf("%i ",m[i]);
        };
//задержка
int u;
scanf("%i",&u);
        return 0;
}
//---------------------------------------------------------------------------
а вот та же но после преобразования
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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <stdio.h>
#include <math.h>
 #include <conio.h>
//---------------------------------------------------------------------------
 
#pragma argsused
 
//функция нахождения суммы элементов с нечетными номерами
int sumnechet(int m[],int n)
        {int sum,i;
        sum = m[0];
        for (i = 2; i <= n; i += 2)
                {
                sum += m[i];
                };
                return sum;
        };
 
//сумма между первым и последним отрицательными элементами
int summegd(int m[],int n)
        {int i,n1,np;
 
        //определение номера первого отрицательного элемента
        for (i = 0; i <= n; i++)
                {
                if (m[i] < 0)
                        {
                        n1 = i;
                        break;
                        };
                };
        //определение номера последнего отрицательного элемента
        for (i = n-1; i != 0; i--)
                {
                if (m[i] < 0)
                        {
                        np = i;
                        break;
                        };
                };
        //проверка на существование границ отрицательных элементов
        if (( np != 0) && ( n1 != np))
                {
                int sum1 = 0;
                //нахождение суммы элементов между первым и последним отрицательным элементом
                for (i = n1+1; i < np; i++)
                        {
                        sum1 += m[i];
                        };
                printf("Summa elementov mejdu pervim i poslednim otricatelnim elementami ravna %i\n",sum1);
                }
        else printf("V massive otsutstvuyut dva otricatel'nih elementa\n");
        }
 
//удаление элементов массива по модулю больших единицы
void sjat(int m[],int n)
        {int i,k ;
        for (i = 0; i < n; i++)
                {
                if (fabs(m[i]) <= 1)
                        {
                        int k;
                        k = i;
                        for (k = i; k < n; k++)
                                {
                                m[k] = m[k+1];
                                m[n] = 0;
                                };
                        };
                };
        //вывод массива после преобразования
        for (i = 0; i < n; i++)
                {
                printf("%i ",m[i]);
                };
        }
 
void main()
{
//создаем новый массив
int m[5]={4,-1,2,3,-9},i,n=5,sum;
printf("Ishodnii massiv\n");
        for (i = 0; i < n; i++)
                {
                printf("%i ",m[i]);
                };
        printf("\n");
//сумма элементов с нечетными номерами
sum=sumnechet(m,n);
//cумма между элементами
summegd(m,n);
printf("Summa necheynih ");
cout<<sum<<endl;
//сжатие массива
printf("Posle udaleniya massiv ");
sjat(m,n);
 
getch();
}
//---------------------------------------------------------------------------
ZVolodumur
49 / 49 / 3
Регистрация: 21.05.2009
Сообщений: 156
11.06.2009, 02:02     Пом Динамический - двумерный массив, не работает=( #24
Ты это пробовал? Оно Удаляет все елементы которые больше 1 по модулю, заменив их на 0 и кинув в конец списка.
Например масив -1, -2, -3, 0, 1, 2, 3
После работы проги: -1, 0, 1, 0, 0, 0, 0
Так? Єсли нет то обясни задание ещё раз поподробней....
C++
1
2
3
4
5
6
7
8
9
10
11
void sjat(int a[],int n)
        {
int i,j,r=0;
for (i=0;i<n; i++)
if (abs(a[i])>1)
        { r++;
        for(j=i; j<n-1; j++)
                a[j]=a[j+1];
       i--; a[n-r]=0;   }
 
        };
Добавлено через 2 минуты 19 секунд
Вот задачка,до преобразования в функию...
Это нужно разбить прогу на функции!?!? А какую прогу?
bratishka-buka
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 63
11.06.2009, 02:04  [ТС]     Пом Динамический - двумерный массив, не работает=( #25
Вот и мне нужно подобное сделать с моим кодом - тебе это подсилу ?
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 <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <stdio.h>
#include <math.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
//кол-во элементов
int n = 9;
//создаем новый массив
int m[9]={2,-1,8,3,-3,4,6,-7,4};
int i;
//вывод исходного массива
printf("Ishodnii massiv\n");
for (i = 0; i < n; i++)
        {
        printf("%i ",m[i]);
        };
printf("\n");
 
//номер минимального элемента массива
int min=m[0];
int nom_min=0;
for (i = 1; i <= n; i++)
        {
        if (m[i] < min)
                {
                min = m[i];
                nom_min = i+1;
                };
        };
printf("Nomer min elementa massiva %i\n ",nom_min);
 
//отрицательные элементы номера
int n1 = 0, n2 = 0;
 
//определение номера первого отрицательного элемента
for (i = 0; i <= n; i++)
        {
        if (m[i] < 0)
                {
                n1 = i;
                break;
                };
        };
 
//определение номера второго отрицательного элемента
for (i = n1+1; i <= n; i++)
        {
        if (m[i] < 0)
                {
                n2 = i;
                break;
                };
        };
//проверка на существование границ отрицательных элементов
if ((n2 != 0) && (n1 != n2))
        {
        int sum_mezhdu = 0;
        //нахождение суммы элементов между первым и последним отрицательным элементом
        for (i = n1+1; i < n2; i++)
                {
                sum_mezhdu += m[i];
                };
        printf("Summa elementov mejdu pervim i vtorim otricatelnim elementami ravna %i\n",sum_mezhdu);
        }
        else printf("V massive otsutstvuyut dva otricatel'nih elementa\n");
 
//упорядочение элементов массива по модулю больших единицы
for (i = 0; i < n; i++)
        {
        if (fabs(m[i]) < 1)
                {
                int k,pr_per=0;
                k = i;
                for (k = i; k < n; k++)
                        {
                        m[k] = m[k+1];
                        m[n] = 0;
                        };
                };
        };
        
//вывод массива после преобразования
for (i = 0; i < n; i++)
        {
        printf("%i ",m[i]);
        };
 
//задержка
int u;
scanf("%i",&u);
return 0;
}
//---------------------------------------------------------------------------
Добавлено через 1 минуту 37 секунд
да верно разбить на функции, а не приобразовать ты молодец,я слово не мог подобрать
ZVolodumur
49 / 49 / 3
Регистрация: 21.05.2009
Сообщений: 156
11.06.2009, 02:07     Пом Динамический - двумерный массив, не работает=( #26
Вот и мне нужно подобное сделать с моим кодом - тебе это подсилу ?

Щас....

Хочешь я немного оптимизирую твою прогу...???
bratishka-buka
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 63
11.06.2009, 02:20  [ТС]     Пом Динамический - двумерный массив, не работает=( #27
ну лиж бы я потом разобрался
ZVolodumur
49 / 49 / 3
Регистрация: 21.05.2009
Сообщений: 156
11.06.2009, 02:25     Пом Динамический - двумерный массив, не работает=( #28
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//упорядочение элементов массива по модулю больших единицы
for (i = 0; i < n; i++)
        {
        if (fabs(m[i]) < 1)
                {
                int k,pr_per=0;
                k = i;
                for (k = i; k < n; k++)
                        {
                        m[k] = m[k+1];
                        m[n] = 0;
                        };
                };
        };
Оно по сути ничего не делает. Что это должно быть?

Когда масив: -1, -2, -3, 0, 1, 2, 3 Что должно быть результатом?
bratishka-buka
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 63
11.06.2009, 02:30  [ТС]     Пом Динамический - двумерный массив, не работает=( #29
Этот код вычисляет:1)Номер минимального элемента массива;2)Сумму элементов массива расположенных между первым и вторым отрицательными элементами

Вычисление должно остаться таким же,ну результат, ток код нужно переписать в виде функций.
ZVolodumur
49 / 49 / 3
Регистрация: 21.05.2009
Сообщений: 156
11.06.2009, 02:36     Пом Динамический - двумерный массив, не работает=( #30
Вот код:
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
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define n 9 //кол-во элементов
//---------------------------------------------------------------------------
 
#pragma argsused
 
void Print(int *a)
{
for(int i=0; i<n; i++)
        printf("%d ",a[i]);
printf("\n");
}
 
int mini(int *a)
{int min=0;
for(int i=0; i<n; i++)
        if(a[i]<a[min])min=i;
return min+1;
}
 
int sum(int *a)
{ int s=0; int pr=-1,ps=-1;
for (int i=0;i<n; i++)
        if (a[i]<0){ if(pr==-1) pr=i; else {ps=i; break;}}
for (int i=pr+1;i<ps; i++)
        s+=a[i];
if(ps==-1) return ps;
return s;
}
 
void sjat(int *a)
{
int i,j,r=0;
for (i=0;i<n; i++)
if (abs(a[i])>1)
        { r++;
        for(j=i; j<n-1; j++)
        a[j]=a[j+1];
        i--; a[n-r]=0;
        }
 
};
 
int main(int argc, char* argv[])
{
 
int m[9]={2,-1,8,3,-3,4,6,-7,4};  //создаем новый массив
printf("Ishodnii massiv\n"); Print(m);   //вывод исходного массива
printf("Nomer min elementa massiva %i\n ",mini(m)); //номер минимального элемента массива
 
if (sum(m)!=-1)   //проверка на существование границ отрицательных элементов
printf("Summa elementov mejdu pervim i vtorim otricatelnim elementami ravna %i\n",sum(m));
else printf("V massive otsutstvuyut dva otricatel'nih elementa\n");
 
sjat(m); //Сжатие Эсли ненужно удали
Print(m); //вывод массива после преобразования
getch(); //задержка
return 0;
}
bratishka-buka
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 63
11.06.2009, 02:48  [ТС]     Пом Динамический - двумерный массив, не работает=( #31
а сделай последнюю,необходимо тож на функции разбить

Вычисляет:1)Колличество элементов массива меньших с
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
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 <vcl.h>
#include <math.h>
#include <iostream.h>
#include <stdio.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
//переменная для кол-во элементов массива
int n;
//ввод кол-ва элементов массива
printf("Vvedite kolichestvo elementov massiva:\n");
scanf("%i",&n);
//создаем массив
float *mas = new float [n];
//ввод элементов массива
printf("Vvedite elementi massiva:\n");
//переменная для счета в for
int i;
for (i = 0; i < n; i++)
        {
        scanf("%f",&mas[i]);
        };
//вывод исходного массива
for (i = 0; i < n; i++)
        {
        printf("%3.2f ",mas[i]);
        };
printf ("\n");
 
//вычисление кол-ва элементов меньших С
int kol;
kol = 0;
float c;
printf("Vvedite C:\n");
scanf("%f",&c);
for (i = 0; i < n; i++)
        {
        if (mas[i] < c)
                {
                kol++;
                };
        };
 
if ((kol == 0))
        {
        printf("Elementov menshe C net\n");
        }
        else
        {
        printf("Kolichestvo elementov menshe C ravno %i\n",kol);
        };
 
//сумма элементов массива, расположенных после последнего отрицательного элемента
float sum = 0;
int pos_otr = 0;
//запоминаем позицию минимального числа
for (i = 0; i < n; i++)
        {
        if (mas[i] < mas[pos_otr]) pos_otr = i;
        };
//считаем сумму после минимального
for (i = pos_otr+1; i < n; i++)
        {
        sum += mas[i];
        };
printf("Summu elementov posle otricatelnogo ravna %3.2f\n",sum);
 
//задержка программы
float u;
scanf("%f",&u);
        return 0;
}
//---------------------------------------------------------------------------
ZVolodumur
49 / 49 / 3
Регистрация: 21.05.2009
Сообщений: 156
11.06.2009, 02:54     Пом Динамический - двумерный массив, не работает=( #32
а сделай последнюю,необходимо тож на функции разбить
Давай уже завтра ато мне Розраху з ОБЖ надо писать... Завтра последний день...
bratishka-buka
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 63
11.06.2009, 02:59  [ТС]     Пом Динамический - двумерный массив, не работает=( #33
ок, а в целом задание то понятное,ну справишься?или пример кинуть...спасибо тебе=)
ZVolodumur
49 / 49 / 3
Регистрация: 21.05.2009
Сообщений: 156
11.06.2009, 03:02     Пом Динамический - двумерный массив, не работает=( #34
ок, а в целом задание то понятное,ну справишься?или пример кинуть...спасибо тебе=)
Пример ненадо. Чтобы расбить на функции даже не обязатильно понимать что прога делает )))))

Добавлено через 1 минуту 9 секунд
Я б тебе даже посоветовал Самому попробовать... Это пригодиться...
bratishka-buka
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 63
11.06.2009, 03:03  [ТС]     Пом Динамический - двумерный массив, не работает=( #35
хотел бы я так же научиться во всем этом разбираться=)
ZVolodumur
49 / 49 / 3
Регистрация: 21.05.2009
Сообщений: 156
11.06.2009, 03:05     Пом Динамический - двумерный массив, не работает=( #36
Какой курс?
bratishka-buka
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 63
11.06.2009, 03:18  [ТС]     Пом Динамический - двумерный массив, не работает=( #37
четвертый но нас так ватно учат,преподы по этому предмету раз 5 менялись, надо ведь определенные основы знать,алгоритм,а как если не разъяснят как это, конструкцию алгоритм,я бы рад но мне нужно представление для понимания...вот и получается замкнутый круг
ZVolodumur
49 / 49 / 3
Регистрация: 21.05.2009
Сообщений: 156
11.06.2009, 03:23     Пом Динамический - двумерный массив, не работает=( #38
четвертый но нас так ватно учат,преподы по этому предмету раз 5 менялись, надо ведь определенные основы знать,алгоритм,а как если не разъяснят как это, конструкцию алгоритм,я бы рад но мне нужно представление для понимания...вот и получается замкнутый круг
Бда... Я на Втором... Но с етим всё пока нормально...
У меня в школе с матиматикой такая же ситуация была....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2009, 09:32     Пом Динамический - двумерный массив, не работает=(
Еще ссылки по теме:
C++ Динамический двумерный вещественный массив
C++ Двумерный динамический массив. Разжевать
C++ Заполнить динамический двумерный массив
Двумерный динамический массив строк C++
Двумерный динамический массив структур C++

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

Или воспользуйтесь поиском по форуму:
bratishka-buka
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 63
11.06.2009, 09:32  [ТС]     Пом Динамический - двумерный массив, не работает=( #39
меня сегодня вечером в сети не будет,я выйду завтра так что не теряй
Yandex
Объявления
11.06.2009, 09:32     Пом Динамический - двумерный массив, не работает=(
Ответ Создать тему
Опции темы

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