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

матрица чисел - C++

Восстановить пароль Регистрация
 
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
25.11.2010, 22:10     матрица чисел #1
Задача такая,написать программу с помощью функций ввода матрицы,вывода матрицы,которая при вводе с экрана номера строки матрицы,должна реверсировать(?) строку..то есть
0 1 4 5 7
1 1 7 9 6
2 3 7 5 6
3 9 8 5 4

ENTER K=_ 0

0 7 5 4 1
1 1 7 9 6
2 3 7 5 6
3 9 8 5 4


вот что то такое...то есть числа первой строки поменял местами..сделать надо это через одномерный массив..то есть функция calc(int x[][n],int y[],int k); отделяет строки и копирует в массив
а функция calc1(int x[][n],int y[],int k); уже реверсирует строку..

я весь код написал но не реверсирует
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
const int n=5;
void inp(int x[][n]);
void out(int x[][n]);
void out1(int y[]);
void calc(int x[][n],int y[],int k);
void calc1(int x[][n],int y[],int k);
 
 
void main()
{
    int x[n][n];
    int y[n];
    int k=0;
    inp(x);
    out(x);
    cout<<"K=";
    cin>>k;
    calc(x,y,k);
    out1(y);
    //calc1(x,y,k);
    out1(y);
}
 
void inp(int x[][n])
{
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            x[i][j]=rand()%10;
}
 
void out(int x[][n])
{
    cout<<endl;
    cout<<"PRINT X";
    cout<<endl;
for(int i=0;i<n;i++)
{
    for(int j=0;j<n;j++)
        cout<<x[i][j]<<" ";
    cout<<endl;
}
cout<<endl;
}
 
void out1(int y[])
{
    cout<<endl;
    cout<<"PRINT Y";
    cout<<endl;
    for(int i=0;i<n;i++)
        cout<<y[i]<<" ";
    cout<<endl;
}
 
void calc(int x[][n],int y[],int k)
{
    for(int i=0;i<n;i++)
        y[i]=x[k][i];       
}
 
void calc1(int x[][n],int y[],int k)
{
    int m=n-1;//ПРЕПОД НА УРОКЕНАПИСАЛ ЧТО ТО ТАКОЕ-Я ЗАБЫЛ...
    for(int i=0;i<n;i++)
        y[i]=x[k][m];
    m--;//ПРЕПОД НА УРОКЕНАПИСАЛ ЧТО ТО ТАКОЕ-Я ЗАБЫЛ...
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
25.11.2010, 22:26     матрица чисел #2
Может так???
C++
1
2
3
4
5
6
7
8
int x;
for(i=0;i<m;i++) 
{           
    for(j=m-1;j>i;j--) 
    {    
         if (a[k][j-1]>a[k][j]) { x=a[k][j-1]; a[k][j-1]=a[k][j]; a[k][j]=x; }
    }
}
І можно без одномерного массива
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
25.11.2010, 22:28     матрица чисел #3
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 <iostream>
using namespace std; 
 
void reverse_row ( int *m, int size );  //разврачивает последовательность.
 
int main(){
 
 const int h = 5;
 const int w = 4;
 
 
 int m[h][w] = {
 
     {1,3,4,5},
     {6,7,8,9},
     {0,2,2,4},
     {9,8,6,1},
     {1,1,0,2}
 };
 
 int i,j;
 
 
 //Разворачиваем каждую строку.
 for( i = 0 ; i < h ; i++ )
       reverse_row(&m[i][0], w );
 
 
 //выводим матрицу.
 for( i = 0 ; i < h ; i++ ){
      for( j = 0 ; j < w ; j++ )cout<<m[i][j]<<' ';
          cout<<endl; 
 }
 
 
  return 0;
}
 
void reverse_row ( int *m, int size ) {
 
int i(0);
int j( size - 1 );
int tmp;
 
  //разворачиваем последовательность.
  while( j > i ){
   tmp = m[i];
   m[i] = m[j];
   m[j] = tmp;
 
   i++;
   j--;
  }
 
 
 
}
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
26.11.2010, 14:43  [ТС]     матрица чисел #4
-comrade-, знаю что можно но надо с одномерным массивом)
Yandex
Объявления
26.11.2010, 14:43     матрица чисел
Ответ Создать тему
Опции темы

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