Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Поменять местами строки матрицы


Автор: Kit0boy 25.11.2010, 19:52
Матрица А из N стpок и N столбцов размещена в одномерном массиве по строкам. Поменять местами К-ю и L-ю строки матрицы (К и L заданы). Результат напечатать по строкам. 
n,k и l задаются с клавы. Знаю, что легко, просто матрицы еще не прошли а задание по ним дают( Если не сложно напишите код.

Автор: mimik 25.11.2010, 19:55
Цитата(Kit0boy @  25.11.2010,  19:52 Найти цитируемый пост)
просто матрицы еще не прошли а задание по ним дают

беги из этой конторы

Автор: Kit0boy 25.11.2010, 20:02
спасибо, конечно, но лучше бы код..

Автор: mimik 25.11.2010, 20:04
Код

int a = 1;
int  b = 2;

int temp = a;
a = b;
b = temp;

cout << a << ' ' << b;

Автор: Kit0boy 25.11.2010, 20:09
только надо цикл а я задаю, но он не меняет почему-то(
Код

#include "stdafx.h"
#include <cstdlib>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;

int main(void)
{   int matrica[100], tmp[100], n, m, temp, i, k, l, j;
    cout << "Vvedite Razmernost massiva:\n";
    cin >> n;
    m=n*n;
    for (i=0; i<m; i++)
       {
         cout << "element massiva " << i << "\n";
         cin >> matrica[i];
         cout <<"\n";
       }
    for (i=0; i<n; i++)
       {
         for (j=i*n;j<(i*n)+n;j++) 
         cout << matrica[j] << " ";
         cout << "\n";
       }
    cout << "Vvedite kakuu stroku zamenit:\n";
    cin >> k;
    cout << "Vvedite na kakuu stroku zamenit:\n";
    cin >> l;
    l-=l;
    k-=k;
    m=l-k;
    for (i=(k*n);i<((k*n)+n);i++)
       {
         tmp[i]=matrica[i];
       }
    for (i=(k*n);i<(k*n+n);i++)
       {
         matrica[i]=matrica[i+m*n];
       }
    for (i=(k*n);i<(k*n+n);i++)
       {
         matrica[i+(m*n)]=tmp[i];
       }
    for (i=0; i<n; i++)
       {
         for (j=i*n;j<(i*n)+n;j++) 
         cout << matrica[j] << " ";
         cout << "\n";
       }
    
return 0;
}


Автор: mimik 25.11.2010, 20:15
книгу не пробовали открывать?

Автор: Kit0boy 25.11.2010, 20:23
можно просто на ошибки указать? книгу не открывал, но дело не в этом, а в том, что я не понимаю где ошибся

Автор: mimik 25.11.2010, 20:29
Цитата(Kit0boy @  25.11.2010,  20:23 Найти цитируемый пост)
можно просто на ошибки указать?

почти весь код, ну кроме
Цитата(Kit0boy @  25.11.2010,  20:09 Найти цитируемый пост)

Код

l-=l;    
k-=k;    
m=l-k;





хоть бы откомментировал что-то

Автор: darkart 25.11.2010, 22:41
Код

#include <iostream>

using namespace std;

void InputMatrix( int* matrix, int dim )
//функция ввода матрицы размерности dim на dim
{
    for( int i = 0; i < dim; i++ )//для каждой строки матрицы
        for( int j = 0; j < dim; j++ )//для каждого элемента строки
            cin >> matrix[ i * dim + j ];//читаем очередной элемент
}

void PrintMatrix( const int* matrix, int dim )
//функция печати матрицы размерности dim на dim
{
    for( int i = 0; i < dim; i++ )//для каждой строки матрицы
    {
        for( int j = 0; j < dim - 1; j++ )//для каждого элемента строи, кроме последнего
            cout << matrix[ i * dim + j ] << " ";//печать очередного элемента и пробел
        cout << matrix[ ( i + 1 ) * dim - 1 ] << endl;//печать последнего элемента с переводом строки
    }
}

void Swap( int& a, int& b )
//функция обмена двух переменных
{
    int temp = a;//запоминаем значение первой переменной
    a = b;//первой переменной присваиваем значение второй
    b = temp;//значениею второй переменной присваиваем ранее запомненное значение первой
}

void SwapStrings( int* matrix, int dim, int strIndex1, int strIndex2 )
//функция обмена двух строк матрицы с индексами strIndex1, strIndex2
{
    for( int i = 0; i < dim; i++ )//для каждого элемента строки
        Swap( matrix[ strIndex1 * dim + i ], matrix[ strIndex2 * dim + i ] );//обмениваем значения соответствующих элементов строк
}

int main()
{
    int dim, strIndex1, strIndex2;//dim - размерность, strIndex1 и strIndex2 - индексы обмениваемых строк
    
    cout << "Vvedite razmernost matrici:" << endl;
    cin >> dim;//ввод размерности матрицы
    
    int* matrix = new int[ dim * dim ];//создаем массив для хранения значений элементов матрицы
    
    cout << "Vvedite matricu(" << dim << "x" << dim << "):" << endl;
    InputMatrix( matrix, dim );//ввод матрицы
    
    cout << "Vvedite indeks 1 stroki dlya obmena:" << endl;
    cin >> strIndex1;//ввод 1 индекса строки

    cout << "Vvedite indeks 2 stroki dlya obmena:" << endl;
    cin >> strIndex2;//ввод 2 индекса строки
    
    cout << "Ishodnaya matrica:" << endl;
    PrintMatrix( matrix, dim );//печать исходной матрицы
    
    SwapStrings( matrix, dim, strIndex1, strIndex2 );//обмен строк матрицы
    
    cout << "Matrica posle obmena strok:" << endl;
    PrintMatrix( matrix, dim );//печать матрицы результата
    
    delete[] matrix;//удаляем массив
    
    return 0;//возвращаем результат
}

Автор: Kit0boy 1.12.2010, 21:57
огромное спасибо)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)