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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2019, 10:41   #1
Anastasiya Volk
Новичок
Джуниор
 
Регистрация: 02.07.2019
Сообщений: 4
Восклицание Двумерные массивы на C(Си)

РЕБЯТА ПОМОГИТЕ КТО ЗНАЕТ КАК!! (очень стыдно на самом деле но уже и в правду не могу разобраться сама, поэтому надеюсь на вашу помощь )

Написать программу, осуществляющую работу с целочисленными матрицами в соответствии с индивидуальным заданием. Предоставить пользователю возможность как генерации элементов матрицы (отрицательные и положительные случайные числа), так и ввода вручную пользователем. Дана квадратная матрица порядка n. Получить новую матрицу, переставляя ее блоки по схеме представленной на рисунке
Изображения
Тип файла: png dd.png (1.7 Кб, 51 просмотров)
Anastasiya Volk вне форума Ответить с цитированием
Старый 02.07.2019, 10:43   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы не перепутали "помогите" и "сделайте за меня"?

покажите свои наработки, конкретные вопросы и т.п. Если кто-то просто решит за вас, это вряд ли поможет вам разобраться.

http://www.programmersforum.ru/announcement.php?f=31

Или в раздел Фриланс если вы не хотите ничего делать, а ищете кого-то, кто выполнит ваши задачи за вознаграждение.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.07.2019, 11:53   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Настя, начните писать код.
для начала объявите массив и заполните его согласно заданию.
выложите свой код в теме, тогда и поговорим.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.07.2019, 10:15   #4
Anastasiya Volk
Новичок
Джуниор
 
Регистрация: 02.07.2019
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Вы не перепутали "помогите" и "сделайте за меня"?

покажите свои наработки, конкретные вопросы и т.п. Если кто-то просто решит за вас, это вряд ли поможет вам разобраться.

http://www.programmersforum.ru/announcement.php?f=31

Или в раздел Фриланс если вы не хотите ничего делать, а ищете кого-то, кто выполнит ваши задачи за вознаграждение.
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Настя, начните писать код.
для начала объявите массив и заполните его согласно заданию.
выложите свой код в теме, тогда и поговорим.


Допустим я начала и все равно у меня путаница с рядами !!!!!!!!!!!!!!!!!!!!!!

Код:
#include <stdio.h>
#include <conio.h>
#define N 2
 
int main()
{       int A[2*N][2*N],B1[N][N],B2[N][N],B3[N][N],B4[N][N],i,j,k,m;
        
        printf("Obichnaya\n");
        for(i=0;i<2*N;i++)
        {       for(j=0;j<2*N;j++)
                {       printf("A[%d][%d]  =  ",i,j);
                        scanf("%d",&A[i][j]);
                }
                printf("\n");
        }
 
        for(i=0;i<2*N;i++)
        {       for(j=0;j<2*N;j++)
                        printf("%d   ",A[i][j]);
                printf("\n");
        }
 

        for(i=0;i<N;i++)
                for(j=0;j<N;j++)
                        B1[i][j]=A[i][j];
 
        for(i=0;i<N;i++)
                for(j=N,m=0;j<2*N;j++,m++)
                        B2[i][m]=A[i][j];
 
        for(i=N,k=0;i<2*N;i++,k++)
                for(j=N,m=0;j<2*N;j++,m++)
                        B3[k][m]=A[i][j];
 
        for(i=N,k=0;i<2*N;i++,k++)
                for(j=0;j<N;j++)
                        B4[k][j]=A[i][j];
 
 
 
 
 
 
 
 
 
 
 
 
 

 for(i=0;i<N;i++)
                for(j=0;j<N;j++)
                        A[i][j]=B4[j][i];
 
        for(i=0;i<N;i++)
                for(j=N,k=0;j<2*N;j++,k++)
                        A[i][j]=B3[i][k];
 
        for(i=N,k=0;i<2*N;i++,k++)
                for(j=N,m=0;j<2*N;j++,m++)
                        A[i][j]=B2[k][m];
 
        for(i=N,k=0;i<2*N;i++,k++)
                for(j=0;j<N;j++)
                        A[i][j]=B1[k][j];
 
        printf("\nizmenennaya\n");
        for(i=0;i<2*N;i++)
        {       for(j=0;j<2*N;j++)
                        printf("%d   ",A[i][j]);
                printf("\n");
        }

return 0;
 }
______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Serge_Bliznykov; 04.07.2019 в 10:28.
Anastasiya Volk вне форума Ответить с цитированием
Старый 04.07.2019, 10:42   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Anastasiya Volk Посмотреть сообщение
Допустим я начала
молодец.

теперь
1) квадратная матрица размера N из целых чисел описывается просто
Код:
int A[N][N];
2) зачем Вам матрицы B1 ,B2,B3, B4 ?!
Вам же одну перестановку надо сделать.
если не хотите трогать исходную, то достаточно завести матрицу int B[N][N]
чтобы получить в ней перестановку.

3) если используете перестановку
то элемент 0,0 должен записаться в позицию N-1, N-1
элемент 0,1 должен записаться в позицию N-2, N-1
элемент 0,2 должен записаться в позицию N-3, N-1
...
элемент 1,0 должен записаться в позицию N-1, N-2
элемент 2,0 должен записаться в позицию N-1, N-3
...
то элемент N-1, N-1 должен записаться в позицию 0,0
элемент N-2, N-1 должен записаться в позицию 0,1
элемент 0,2 должен записаться в позицию N-3, N-1

поэтому получаем
Код:
        for(i=0;i<N;i++)
                for(j=0;j<N;j++)
                        B[N-1-j][N-1-i]=A[i][j];
вот и всё. осталось дописать вывод
Код:
        printf("\nizmenennaya\n");
        for(i=0;i<N;i++)
        {       for(j=0;j<N;j++)
                        printf("%d   ",B[i][j]);
                printf("\n");
        }

вот можете посмотреть на образец
https://ideone.com/GqKX5g

Код:
#include <stdio.h>
#define N 6

int main(void) {
      int A[N][N],B[N][N];
        
        int k=0;
        printf("Obichnaya\n");
        for(int i=0;i<N;i++){
        	for(int j=0;j<N;j++)
                {       //printf("A[%d][%d]  =  ",i,j);
                        //scanf("%d",&A[i][j]);
                        A[i][j]=k++;
                }
                //printf("\n");
        }
        
        printf("\nИсходная матрица\n");
        for(int i=0;i<N;i++)
        {       for(int j=0;j<N;j++)
                        printf("%4d ",A[i][j]);
                printf("\n");
        }
        
        // запись в B с перестановкой
        for(int i=0;i<N;i++)
                for(int j=0;j<N;j++)
                        B[N-1-j][N-1-i]=A[i][j];

        printf("\nРезультат матрица\n");
        for(int i=0;i<N;i++)
        {       for(int j=0;j<N;j++)
                        printf("%4d ",B[i][j]);
                printf("\n");
        }
        
        
        return 0;
}

Последний раз редактировалось Serge_Bliznykov; 04.07.2019 в 11:00.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.07.2019, 11:54   #6
Anastasiya Volk
Новичок
Джуниор
 
Регистрация: 02.07.2019
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
молодец.

теперь
1) квадратная матрица размера N из целых чисел описывается просто
Код:
int A[N][N];
2) зачем Вам матрицы B1 ,B2,B3, B4 ?!
Вам же одну перестановку надо сделать.
если не хотите трогать исходную, то достаточно завести матрицу int B[N][N]
чтобы получить в ней перестановку.

3) если используете перестановку
то элемент 0,0 должен записаться в позицию N-1, N-1
элемент 0,1 должен записаться в позицию N-2, N-1
элемент 0,2 должен записаться в позицию N-3, N-1
...
элемент 1,0 должен записаться в позицию N-1, N-2
элемент 2,0 должен записаться в позицию N-1, N-3
...
то элемент N-1, N-1 должен записаться в позицию 0,0
элемент N-2, N-1 должен записаться в позицию 0,1
элемент 0,2 должен записаться в позицию N-3, N-1

поэтому получаем
Код:
        for(i=0;i<N;i++)
                for(j=0;j<N;j++)
                        B[N-1-j][N-1-i]=A[i][j];
вот и всё. осталось дописать вывод
Код:
        printf("\nizmenennaya\n");
        for(i=0;i<N;i++)
        {       for(j=0;j<N;j++)
                        printf("%d   ",B[i][j]);
                printf("\n");
        }

вот можете посмотреть на образец
https://ideone.com/GqKX5g

Код:
#include <stdio.h>
#define N 6

int main(void) {
      int A[N][N],B[N][N];
        
        int k=0;
        printf("Obichnaya\n");
        for(int i=0;i<N;i++){
        	for(int j=0;j<N;j++)
                {       //printf("A[%d][%d]  =  ",i,j);
                        //scanf("%d",&A[i][j]);
                        A[i][j]=k++;
                }
                //printf("\n");
        }
        
        printf("\nИсходная матрица\n");
        for(int i=0;i<N;i++)
        {       for(int j=0;j<N;j++)
                        printf("%4d ",A[i][j]);
                printf("\n");
        }
        
        // запись в B с перестановкой
        for(int i=0;i<N;i++)
                for(int j=0;j<N;j++)
                        B[N-1-j][N-1-i]=A[i][j];

        printf("\nРезультат матрица\n");
        for(int i=0;i<N;i++)
        {       for(int j=0;j<N;j++)
                        printf("%4d ",B[i][j]);
                printf("\n");
        }
        
        
        return 0;
}
спасибо воспользовалась!
Anastasiya Volk вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные Массивы С++ DaffyDuck Помощь студентам 3 20.12.2015 21:55
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы vitaxa94 Помощь студентам 3 27.02.2012 14:56
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51