Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2011, 23:36   #1
xarti
 
Регистрация: 14.01.2011
Сообщений: 7
По умолчанию Работа с матрицей

Здравствуйте, столкнулся с проблемкой.
Имеется массив, необходимо создать новый забить его единичками и заменить второй столбец на 2ой столбец из первой матрицы.

Написал вот что, но работает как-то криво :
Код:
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

const int m=5,n=2;

 int a[5][5];

int main()
{
    cout<<"Vvedite massiv"<< endl;
     int i,j;
   for (i=0; i<m; i++)
   {
   cout<<"->";
   for (j=0; j<n; j++)
   cin>>a[i][j];
   }
   cout<<"Vvedennii massiv"<< endl;
   for (i=0; i<m; i++)
   {
    for (j=0; j<n; j++)
     cout<<a[i][j]<<" ";
      cout<<endl;
   }
    cout<<"Vvedennii massiv"<< endl;
   int matrix[5][5];
    int t, r;
     for(r=0; r<n; r++) {
  for(t=0; t<m; t++) {
   matrix[r][t]=1;

  int z;
   {
  z=matrix[r][0];
  matrix[r][0]=matrix[r][j];
  matrix[r][j]=z;
 }
   cout<<matrix[r][j]<<" ";
   } }
      cout<<endl;
     getch();

       return 0;
}

}
Подскажите как это исправить или легче сделать.

Последний раз редактировалось Stilet; 15.01.2011 в 11:41.
xarti вне форума Ответить с цитированием
Старый 15.01.2011, 01:57   #2
EddieG
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 42
По умолчанию

Готово!

Код:
#include <iostream>

using namespace std;

int main()
{
    int i, t, num[3] [4];

    cout << "num: " << endl;
    for (t=0; t<3; ++t){
    for (i=0; i<4; ++i) {
        num[t][i] = i*4 +t;
        cout << num[t][i] << ' ';}
    cout << endl;}

    cout << endl;

    cout << "mas: " << endl;
    int e, w, mas[3][4];
    for (e=0; e<3; ++e) {
    for (w=0; w<4; ++w) {
    mas[e][w] = 1;
    cout << mas[e][w] << ' ';}
    cout << endl;}



      for (e=0; e<3; ++e){
      for (t=1; t<2; ++t){
      mas[e][1] = num[e][t];}}


    cout << endl;

    cout << "New mas: " << endl;
    for (e=0; e<3; ++e) {
    for (w=0; w<4; ++w) {

    cout << mas[e][w] << ' ';}
    cout << endl;}

return 0;
}
Допущение несогласованных и логически несовместимых представлений - часть человеческого мышления.
EddieG вне форума Ответить с цитированием
Старый 15.01.2011, 13:08   #3
xarti
 
Регистрация: 14.01.2011
Сообщений: 7
По умолчанию

Благодарю, осталось подправить чтоб как надо работало но это уж сам=)
xarti вне форума Ответить с цитированием
Старый 15.01.2011, 14:11   #4
EddieG
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 42
Радость

Цитата:
Сообщение от xarti Посмотреть сообщение
Благодарю, осталось подправить чтоб как надо работало но это уж сам=)
Да, она не универсальна. Дальше что делать - понятно
Допущение несогласованных и логически несовместимых представлений - часть человеческого мышления.
EddieG вне форума Ответить с цитированием
Старый 15.01.2011, 15:43   #5
xarti
 
Регистрация: 14.01.2011
Сообщений: 7
По умолчанию

Наберусь наглости еще спрошу в продолжение этого же кода транспонирую матрицу полученную и все бы хорошо, но маленький косяк:
Код:
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>1
const int m=5, n=2;
int num[5][5];
char bufRus[256];

char*Rus(const char* text)
{
    CharToOem(text,bufRus);
    return bufRus;
}
int main()
{

    cout <<(Rus("Aaaaeoa iannea")) << endl;
    int t,i;
    for (t=0; t<m; t++)
    {
    cout<<"->";
    for (i=0; i<n; i++)
    cin>>num[t][i];
    }
    cout<<(Rus("Aaaaaiiue iannea"))<<endl;
    for (t=0; t<m; t++)
    {
    for (i=0; i<n; i++)
     cout<<num[t][i]<<" ";
     cout << endl;
     }


    int e, w, mas[5][2];
    for (e=0; e<5; ++e) {
    for (w=0; w<2; ++w) {
    mas[e][w] = 1;
    }
    }



      for (e=0; e<5; ++e){
      for (t=1; t<2; ++t){
      mas[e][1] = num[e][t];}}


    cout << endl;

    cout <<(Rus("Noi?ie?iaaiiay iao?eoa ")) << endl;
    for (e=0; e<5; ++e) {
    for (w=0; w<2; ++w) {

    cout << mas[e][w] << ' ';}
    cout << endl;}
     int a;
    {
            a=mas[e][w];
            mas[e][w]=mas[w][e];
            mas[w][e]=a;
         }
            for (e=0;e<n;e++)
         {
            for (w=0;w<m;w++)
         {
            printf("%4d",mas[w][e]);
            printf (" ");
            if(w==m-1)
            printf("\n");
        }


}
     getch();
return 0;
}
Как избавиться, что подправить подскажите пожалуйста.

Последний раз редактировалось Stilet; 15.01.2011 в 16:06.
xarti вне форума Ответить с цитированием
Старый 15.01.2011, 16:09   #6
EddieG
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 42
По умолчанию

В чем вопрос? Все работает правильно! Зачем используешь функцию билиотеки windows.h ?

Код:
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>

using namespace std;

const int m=5, n=2;
int num[5][5];
char bufRus[256];

char *Rus(const char* text)
{
CharToOem(text,bufRus);
return bufRus;
}
int main()
{

cout <<(Rus("Aaaaeoa iannea")) << endl;
int t,i;
for (t=0; t<m; t++)
{
cout<<"->";
for (i=0; i<n; i++){
cin>>num[t][i];
}
}
cout<<(Rus("Aaaaaiiue iannea"))<<endl;
for (t=0; t<m; t++)
{
for (i=0; i<n; i++)
cout<<num[t][i]<<" ";
cout << endl;
}


int e, w, mas[5][2];
for (e=0; e<5; ++e) {
for (w=0; w<2; ++w) {
mas[e][w] = 1;
}
}



for (e=0; e<5; ++e){
for (t=1; t<2; ++t){
mas[e][1] = num[e][t];}}


cout << endl;

cout <<(Rus("Noi?ie?iaaiiay iao?eoa ")) << endl;
for (e=0; e<5; ++e) {
for (w=0; w<2; ++w) {

cout << mas[e][w] << ' ';}
cout << endl;}


/*int a;

a=mas[e][w];
mas[e][w]=mas[w][e];
mas[w][e]=a;*/

for (e=0;e<n;e++){
for (w=0;w<m;w++){
printf("%4d",mas[w][e]);
printf (" ");
}
printf("\n");
}
getch();
return 0;
}
Допущение несогласованных и логически несовместимых представлений - часть человеческого мышления.
EddieG вне форума Ответить с цитированием
Старый 15.01.2011, 16:23   #7
xarti
 
Регистрация: 14.01.2011
Сообщений: 7
По умолчанию

Вот теперь работает нормально, а до выдавал в транспонированной матрице в последнем столбце непонятно откуда взявшееся число.
Хотел комментарии на русском сделать.
xarti вне форума Ответить с цитированием
Старый 15.01.2011, 16:27   #8
EddieG
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 42
По умолчанию

Цитата:
Сообщение от xarti Посмотреть сообщение
Вот теперь работает нормально, а до выдавал в транспонированной матрице в последнем столбце непонятно откуда взявшееся число.
Хотел комментарии на русском сделать.
А пишешь на английском.
Допущение несогласованных и логически несовместимых представлений - часть человеческого мышления.
EddieG вне форума Ответить с цитированием
Старый 15.01.2011, 20:31   #9
xarti
 
Регистрация: 14.01.2011
Сообщений: 7
По умолчанию

знаний и умений нет вот и пишу )
Назрел очередной вопрос
есть матрица допустим a[f][w] размерностью 5х2 нужно создать новую копированием этой с удалением 2ого столбца
попытался сделать так но выдает как и надо 1 столбец но пустой
Код:
float c[5][5]
int g,h;
for (g=0; g<5; g++) {
for (h=0; h<2; h++) {
}}
for (g=0; g<m; g++)
{
for (h=0; h<n-1; h++)
c[g][h]=a[f][w];
cout<<c[g][h]<<" ";
cout << endl;
}
From Stilet: Код оформляй по кнопке #. Попрошу соблюдать это приличие!
учту!

Последний раз редактировалось xarti; 15.01.2011 в 21:29.
xarti вне форума Ответить с цитированием
Старый 15.01.2011, 23:43   #10
EddieG
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 42
По умолчанию

5х2 не интересно. Сделал 5х3 для наглядности.

Код:
#include <windows.h>
#include <iostream>
#include <cstdlib>

const int n = 5;
const int m = 3;

using namespace std;

char bufRus[256];

char*Rus(const char* text)
{
    CharToOem(text,bufRus);
    return bufRus;
}


int main()
{
cout << (Rus("Исходная матрица: ")) << endl;
int mas[n][m];
int i,j;
for (i=0;i<n;++i) {
for (j=0;j<m;++j) {
    mas[i][j] = rand()%3;
    cout << mas[i][j] << ' ';
}
cout << endl;
}

cout << endl;

cout << (Rus("Новая матрица: ")) << endl;
int n_mas[n][m];
for(i=0;i<n;++i) {
for (j=0;j<m;++j) {
    n_mas[i][j] = mas[i][j];
    cout << n_mas[i][j] << ' ';
}
cout << endl;
}

cout << endl;

cout << (Rus("Новая матрица без 2го столбца: ")) << endl;
for (i=0;i<n;++i) {
for (j=0;j<m;++j) {
    if(j!=1)
    cout << n_mas[i][j] << ' ';
}
cout << endl;
}

    return 0;
}
Допущение несогласованных и логически несовместимых представлений - часть человеческого мышления.

Последний раз редактировалось EddieG; 15.01.2011 в 23:57.
EddieG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с матрицей mego4el Общие вопросы C/C++ 4 22.12.2010 02:52
Работа с матрицей GM402 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 29.11.2010 23:22
работа с матрицей RanMa Помощь студентам 6 12.03.2010 17:05
Работа с матрицей! Bin Помощь студентам 3 13.12.2009 00:30
Работа с матрицей JeyKip Общие вопросы C/C++ 4 25.10.2009 22:47