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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 13:03   #1
приправыч
Пользователь
 
Регистрация: 04.12.2012
Сообщений: 12
По умолчанию нужно поправить программы на Си(матрицы)

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

Код:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

#define N 3

void getRandomMatrix( int **matr )

{
    srand( time( NULL ) );
    int i, j;
    for( i = 0; i < N; ++i )
        for( j = 0; j < N; ++j )
            matr[ i ][ j ] = i * N + j + 1;
}

void printMatrix( int **matr )

{
    int i, j;
    printf( "\n" );
    for( i = 0; i < N; ++i )

   {
        for( j = 0; j < N; ++j )
            printf( "%4d", matr[ i ][ j ] );
        printf( "\n" );
    }
    printf( "\n" );

}

void snakePrint( int **matr )

{
    int i, j, k;
   for( j = N - 1; j >= 0; --j )
       for( i = 0, k = j; i < N - j, k < N; i++, k++ )
            printf( "%3d", matr[ i ][ k ] );

    for( i = 1; i < N; i++ )
        for( j = 0, k = i; j < N - i, k < N; j++, k++ )
            printf( "%3d", matr[ k ][ j ] );
    printf( "\n" );
}

int main()

{
    int **matrix = ( int** )malloc( N * sizeof( int* ) ), i, shift;
    for( i = 0; i < N; ++i )
        matrix[ i ] = ( int* )malloc( N * sizeof( int ) );

    getRandomMatrix( matrix );
    printMatrix( matrix );

    snakePrint( matrix );

    return 0;

}
Код:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

#define N 5
#define M 6

void getRandomMatrix( int **matr )
{
    srand( time( NULL ) );
    int i, j;
    for( i = 0; i < N; ++i )
        for( j = 0; j < M; ++j )
            matr[ i ][ j ] = rand() % ( M * N );
}

void printMatrix( int **matr )

{
    int i, j;
    printf( "\n" );
    for( i = 0; i < N; ++i )
    {
        for( j = 0; j < M; ++j )
            printf( "%4d", matr[ i ][ j ] );
        printf( "\n" );
    }
    printf( "\n" );
}

void shiftMatrix( int **matr, int k )

{
    int i, j, t;
    for( i = 0; i < N; ++i )
    {
        for( t = 0; t < k; ++t )
        {
            int var = matr[ i ][ M - 1 ];
            for( j = M - 1; j > 0; --j )
                matr[ i ][ j ] = matr[ i ][ j - 1 ];
            matr[ i ][ 0 ] = var;
        }
    }
}

int main()
{
    int **matrix = ( int** )malloc( N * sizeof( int* ) ), i, shift;
    for( i = 0; i < N; ++i )
        matrix[ i ] = ( int* )malloc( M * sizeof( int ) );

    getRandomMatrix( matrix );
    printMatrix( matrix );

    printf( "Shift : " );
    scanf( "%d", &shift );

    shiftMatrix( matrix, shift );
    printMatrix( matrix );

    return 0;
}
приправыч вне форума Ответить с цитированием
Старый 25.12.2012, 13:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
matr[ i ][ j ] = i * N + j + 1;
Замени на scanf("%d",&matr[ i ][ j ])
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2012, 13:08   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Простой способ: сделать N глобальной переменной и в начале работы программы запросить у пользователя число и присвоить N введённое значение.
Abstraction вне форума Ответить с цитированием
Старый 25.12.2012, 13:17   #4
приправыч
Пользователь
 
Регистрация: 04.12.2012
Сообщений: 12
По умолчанию

Stilet, нужно задать с клавиатуры размер матрицы, к примеру: (4х4, 5х5) в первой программе, и (4х4,4х5) во второй.

Abstraction, можете помочь кусками кода, пожалуйста?
приправыч вне форума Ответить с цитированием
Старый 25.12.2012, 13:28   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Abstraction, можете помочь кусками кода, пожалуйста?
Объявление глобальной переменной (если в Вашем учебнике этого нет, найдите учебник получше):
Код:
int N;
Ввод числа с помощью функции scanf (если в Вашем учебнике этого нет, найдите учебник получше):
Код:
scanf("%d",&N);
Abstraction вне форума Ответить с цитированием
Старый 25.12.2012, 13:36   #6
приправыч
Пользователь
 
Регистрация: 04.12.2012
Сообщений: 12
По умолчанию

Abstraction, я это знаю: вот на что ругается прога;

14.c:7: error: expected identifier or '(' before '{' token

вот что добавил(перед первым void)
Код:
int N;
{
     printf("N = ",N);
     scanf("%d", &N);
приправыч вне форума Ответить с цитированием
Старый 25.12.2012, 13:39   #7
приправыч
Пользователь
 
Регистрация: 04.12.2012
Сообщений: 12
По умолчанию

все, прошу прощения за тупость свою, разобрался
приправыч вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно поправить шапку сайта. privat Фриланс 0 19.05.2012 06:54
Нужно поправить код SenFeron Помощь студентам 2 04.01.2011 19:54
Нужно поправить код файла экспорта rss alexey_11 Помощь студентам 0 18.05.2010 10:43
Нужно поправить код kimoncar PHP 0 13.04.2010 12:52