Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C] Умножение матрицы на число и сложение мат-ц 
:(
    Опции темы
kasir
Дата 19.10.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 9.10.2006

Репутация: нет
Всего: нет



По заданию ее надо транспорировать умножить на число и сложить матрицы для сложения думаю надо создать еще одну ну вот пока не могу разобратся как умножить матрицу на число.

Код

/* Transponirovanie matrix */

#include <stdio.h>

void main()
{
     int mat[20][20];        /* Matrix chelix chisel */
     int ,size, i, j, temp, b;

         printf("\n\nVvedite razmernost matrix: ");
         scanf("%d", &size) ;


     for( i = 0; i < size; i++)

     {
        printf("\nVvedite nomer stroki : ");

        for (j=0;j<size; j++) {
            printf("mat[%d][%d]=",i,j);
            scanf("%d", &mat[i][j]);}
     }


                                           /* Vivod rezultata */
    for ( i = 0; i < size; i++ )
        { printf("\n\n");
          for( j = 0; j < size; j++)
               printf("%d ",mat[i][j]);
        }





        i = 1;
        do{
              j = 0;
              do{
               temp = mat[i][j]; mat[i][j] = mat[j][i]; mat[j++][i ] = temp;
                  } while (j<i);
       }    while ( ++i < size );
                                           /* Vivod rezultata */
    for ( i = 0; i < size; i++ )
        { printf("\n\n");
          for( j = 0; j < size; j++)
               printf("%d ",mat[i][j]);
        }

/* ВОТ ЗДЕСЬ ПРОИСХОДИТ УМНОЖЕНИЕ НА ЧИСЛО ПОМОГИТЕ ДОПИСАТЬ*/

printf("vvedite chislo na kakoe umnozhit matricu");
scanf("%d",&b);

for (i=0;i<size;i++)
        { printf("\n\n");
          for( j = 0; j < size;j++)

  printf("%d ",mat[i][j]);
        }

}



Это сообщение отредактировал(а) alexeis1 - 19.10.2006, 19:53
PM MAIL   Вверх
Rockie
Дата 19.10.2006, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31



Код
    for ( i = 0; i < size; i++ )
      for( j = 0; j < size; j++)
         mat[i][j]*=b;
// mat[i][j]*=b; равносильно mat[i][j]= mat[i][j]*b;



--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
ДобренькийПапаша
Дата 19.10.2006, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



kasir, уважаемый, не тратьте зря время, алгоритмы есть на форуме. Поищи, целая куча алгоритмов с реализацией на С.

Это сообщение отредактировал(а) ДобренькийПапаша - 19.10.2006, 19:23


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
ДобренькийПапаша
Дата 20.10.2006, 05:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7





--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Oleg_Ci
Дата 21.10.2006, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 25
Всего: 30



Программа транспорирует, умножает и складывает матрицы
Код

#include <stdio.h>
#include <stdlib.h>

void NewMatrix( int ***matrix, int row, int col ); //Выеление памяти для матриц
void DeleteMatrix( int **matrix, int row ); //Удаление памяти для матриц
void ReadMatrix( int **matrix, int row, int col ); //Заполнение матрицы значениями
void WriteMatrix( int **matrix, int row, int col ); //Вывод матрицы на консоль
void Transpose (int ***matrix, int *row, int *col); // Транспорирование матрицы
void Swap( int *a, int *b ); // обмен значений

//___________ MAIN ____________
int main(int argc, char *argv[] )
{
    int **matrix1, row1, col1, // первая матрица ( столбики, ряды )
        **matrix2, row2, col2, // вторая матрица
        plus, // умножаемое число к матрице
        i, j;  // счётчики цикла

    // ввод размерности матриц
    printf("%s", "Matrix1 row = ");
    scanf("%d", &row1 );
    printf("%s", "Matrix1 col = ");
    scanf("%d", &col1 );
    printf("%s", "Matrix2 row = ");
    scanf("%d", &row2 );
    printf("%s", "Matrix2 col = ");
    scanf("%d", &col2 );

    // Заполняем значениями
    NewMatrix( &matrix1, row1, col1 );
    NewMatrix( &matrix2, row2, col2 );
    puts("\nEnter the values of the matrix 1 :");
    ReadMatrix( matrix1, row1, col1 );
    puts("\nEnter the values of the matrix 2 :");
    ReadMatrix( matrix2, row2, col2 );

    // Выодим обе матрицы
    puts("\nContent a 1 matrix :");
    WriteMatrix( matrix1, row1, col1 );
    puts("\nContent a 2 matrix :");
    WriteMatrix( matrix2, row2, col2 );

    // Транспорируем первую матрицу
    puts("\ntransporirovanie matrix1:");
    Transpose( &matrix1, &row1, &col1 );
    WriteMatrix( matrix1, row1, col1 );

    // Умножаем первую матрицу на число plus
    printf("\nEnter a number for the increase = ");
    scanf("%d", &plus );
    for ( i=0; i<row1; i++ )
        for( j=0; j<col1; j++ )
            *(*(matrix1 +i) +j) = *(*(matrix1 +i) +j) * plus;
    puts("Content a 1 matrix :");
    WriteMatrix( matrix1, row1, col1 );

    // Складывание двух матриц - результат в первой матрице
    puts("\nMatrix1 + Matrix2  result:");
    for ( i=0; i<row1 && i<row2; i++ )
        for( j=0; j<col1 && j<col2; j++ )
            *(*(matrix1 + i) +j ) += /*(*(matrix1 + i) +j ) +*/ *(*(matrix2 +i) +j );
    puts("Content a 1 matrix :");
    WriteMatrix( matrix1, row1, col1 );

    DeleteMatrix( matrix1, row1 );
    DeleteMatrix( matrix2, row2 );
    //printf("\n\n");
    system("pause");
    return 0;
}
//__________ END MAIN __________

void NewMatrix( int ***matrix, int row, int col ){
    *matrix = (int**)malloc( row * sizeof(int*) );
    int i;
    for ( i=0; i<row; i++ )
        *(*matrix +i) = (int*) malloc( col * sizeof(int) );
}
//________________________________
void DeleteMatrix( int **matrix, int row ){
    int i;
    for ( i=0; i<row; i++ )
        free( *(matrix +i));
    free( matrix );
}
//________________________________
void ReadMatrix( int **matrix, int row, int col ){
    int i, j;
    for ( i=0; i<row; i++ )
        for( j=0; j<col; j++ ){
            printf("Matrix[%d][%d] = ", i, j );
            scanf("%d", *(matrix+i)+j);
        }
}
//_________________________________
void WriteMatrix( int **matrix, int row, int col ){
    int i, j;
    for ( i=0; i<row; i++ ){
        for ( j=0; j<col; j++ ){
            printf("%3d ", *(*(matrix +i) +j ));
        }
        printf("\n");
    }
}
//_________________________________
void Transpose (int ***matrix, int *row, int *col){
    int i, j;
    int **m = (int**)malloc( *col * sizeof(int*));
    for ( i=0; i<*col; i++ )
        *( m +i ) = (int*)malloc( *row * sizeof(int));

    for ( i=0; i<*row; i++ )
        for ( j=0; j<*col; j++ )
            Swap( *(*matrix +i) +j, *( m+j ) +i );

    DeleteMatrix( *matrix, *row );
    Swap( row, col );
    *matrix = m;
}
//_________________________________
void Swap( int *a, int *b ){
    int n = *a;
    *a = *b;
    *b = n;
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.