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

Обработка динамических массивов - C++

Восстановить пароль Регистрация
 
MrAleksej
 Аватар для MrAleksej
20 / 15 / 8
Регистрация: 05.12.2010
Сообщений: 251
Записей в блоге: 1
26.03.2011, 15:19     Обработка динамических массивов #1
В матрице удалить строку с минимальным произведением элементов, а затем в качестве третьей добавить строку элементы которой равны разностям элементов последней и первой строк.


Подскажите, пожалуйста, я в правильном направлении двигаюсь?
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
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<stdlib.h>
void inmatr(int[][20],int&,int&);
void outmatr(int[][20],int,int);
void umnogenie(int[][20],int,int);
void main()
{
  int x[10][20],n,m,str,k,kol=0; //kol- kol-vo obrabativaemih matric
  char ch;
  clrscr();
  do{
      inmatr(x,n,m);
      cout<<setw(30)<<"Vvedena matrica:"<<endl;
      outmatr(x,n,m);
      cout<<"Ukagite nomer sortiruemoj stroki(<"<<n<<"):";
      cin>>k;
      umnogenie(x,k,m);
      cout<<endl<<setw(30)<<"Poluchena matrica:"<<endl;
      outmatr(x,n,m);
      kol++;
      cout<<endl<<"Prodolgit rabotu (y/n)? ";
      cin>>ch;}
      while(ch=='y'||ch=='Y');
  cout<<"Obrabotano matric: "<<kol<<endl;
  cout<<"Konec programmi";
  getch();
}
void inmatr(int a[][20],int&p,int&q)
{
  cout<<"Vvedite razmer matrici:"<<endl
      <<"chislo strok(<=10):";
  cin>>p;
  cout<<"chislo stolbcov(<=20):";
  cin>>q;
  for(int i=0;i<p;i++)
    for(int j=0;j<q;j++)a[i][j]=(rand()-16383)%100;
}
void outmatr(int a[][20],int p,int q)
{
  for(int i=0;i<p;i++){
    for(int j=0;j<q;j++)cout<<setw(4)<<a[i][j];
    cout<<endl;}
}
 
void umnogenie(int a[][20],int t,int q)
{
  int z,str;
  for(int i=1;i<q-1;i++)
    for(int j=q-1;j>=i;j--)
     str=(a[q][j-1])*(a[t][j]);
     cout<<"stroka =",str<<end;}
После того, как я узнаю результат уммножения(я его вывел там под str) я должен сравнить эти результаты? А как сделать так, что бы компьютер помнил, откуда этоот результат (из какой строки)?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
26.03.2011, 15:24     Обработка динамических массивов #2
Цитата Сообщение от MrAleksej Посмотреть сообщение
После того, как я узнаю результат уммножения(я его вывел там под str) я должен сравнить эти результаты? А как сделать так, что бы компьютер помнил, откуда этоот результат (из какой строки)?
Создай одномерный массив, равный количеству строк, и туда записывай произведения элементов строк, а потом по индексу строки можно из него взять произведение
MrAleksej
 Аватар для MrAleksej
20 / 15 / 8
Регистрация: 05.12.2010
Сообщений: 251
Записей в блоге: 1
26.03.2011, 15:30  [ТС]     Обработка динамических массивов #3
Прописать str[i]?
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
26.03.2011, 16:01     Обработка динамических массивов #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
#include<iostream>
#include<iomanip>
#include<conio.h>
#include<cstdlib>
 
using namespace std;
 
void initMatrix( int **, int&, int&, int * );
void outmatr( int **, int, int );
 
 
void main()
{
    int rows;
    int cols;
    //матрица
    int ** matrix;
    //Массив для произведений элементов строки
    int * incr;
    //int n, m, str, k, kol = 0; //kol- kol-vo obrabativaemih matric
    char ch;
 
    do{
        system("cls");
        cout << "Vvedite razmer matrici:" << endl
            << "chislo strok ( <= 10 ): ";
        cin >> rows;
        cout << "chislo stolbcov( <= 20 ): ";
        cin >> cols;
        incr = new int [ rows ];
        matrix = new int * [ rows ];
        for ( int i = 0; i < rows; i++ ) { 
            matrix[ i ] = new int [ cols ];     
        }
        initMatrix( matrix, rows, cols, incr );
        cout << setw(30) << "Vvedena matrica:" << endl;
        outmatr( matrix, rows, cols );
//      cout<<"Ukagite nomer sortiruemoj stroki(<"<<n<<"):";
//      cin>>k;
//      umnogenie( x, k, m);
//      cout<<endl<<setw(30)<<"Poluchena matrica:"<<endl;
//      outmatr(x,n,m);
//      kol++;
        cout << endl << "Prodolgit rabotu (y/n)? ";
        cin >> ch;
    } while( ch == 'y'||ch == 'Y' );
    //cout<<"Obrabotano matric: "<<kol<<endl;
    cout<<"Konec programmi";
 
    for ( int i = 0; i < rows; i++ ) { 
        delete [] matrix[ i ];      
    } 
    delete [] incr;
    delete [] matrix;
    _getch();
}
void initMatrix(int ** matr, int & row, int & col, int * increase )
{ 
    int incr;
    for(int i = 0; i < row; i++) {
        incr = 1;
        for(int j = 0; j < col; j++){
            matr[ i ][ j ] = ( rand() - 16383 ) % 100;
            incr *= matr[ i ][ j ];
        }
        increase [ i ] = incr;
    }
}
 
void outmatr(int ** matr, int row,int col )
{
    for( int i = 0; i < row; i++ ){
        for(int j = 0; j < col; j++)
            cout << setw(4) << matr[ i ][ j ];
        cout<<endl;
    }
}
Yandex
Объявления
26.03.2011, 16:01     Обработка динамических массивов
Ответ Создать тему
Опции темы

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