Форум программистов, компьютерный форум CyberForum.ru

Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Spotter
8 / 8 / 2
Регистрация: 09.11.2010
Сообщений: 130
09.11.2010, 18:45     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #1
Уважаемые форумчане, такая проблема, не знаю как решить задачу, в моём городе мне не к кому обратиться с ней, все либо уже забыли либо просто не знают. Сам я лично просто напросто ещё до массивов не дошёл, а задание нужно сдать в ближайшие дни((( Помогите пожалуйста, кто может. Задача на языке Си.

Вот собственно само задание:

Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. Реализовать, используя указатели.

Добавлено через 2 часа 25 минут
Помогите пожалуйста кто может, очень нужно (
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2010, 18:45     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево.
Посмотрите здесь:

C++ дан двумерный массив размерностью Н, заполненный целыми числами, все его отрицательные элементы записать в одномерный массив, все его положительные за
Дан массив а1,а2,,…,аn. Переставить его элементы так, чтобы в начале массива расположились все его неотрицательные элементы, а в конце – отрицательные C++
Как преобразовать массив создав новый из старого с изменениями?! C++
Дан массив а1+ a2+…+an Переставить его элементы так чтобы в начале массива расположились все его неотрицательные элементы, а в конце - отрицательные C++
Одномерный массив. Сдвинуть элементы циклически на n позиций влево C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VASSUV
MiThEoN
 Аватар для VASSUV
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 403
Записей в блоге: 2
09.11.2010, 19:18     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #2
Тебе что нужно!!! что-бы с матрици
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7

ответ был таким
3 4 5
4 5 6
5 6 7
или таким
3 4 5 1 2
4 5 6 2 3
5 6 7 3 4
????????
Spotter
8 / 8 / 2
Регистрация: 09.11.2010
Сообщений: 130
09.11.2010, 19:40  [ТС]     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #3
VASSUV, Вот тут я если честно я сам не знаю как именно, сам думал про это, с переносом нужно первых двух элементов или с отсеиванием, но думаю если ничего в условии задачи про перенос их не сказано, то просто с отсеиванием.
VASSUV
MiThEoN
 Аватар для VASSUV
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 403
Записей в блоге: 2
09.11.2010, 20:32     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
int _tmain(int argc, _TCHAR* argv[])
{
    int n,m,i,j;
    int a[20][20];
    puts("razmeri massiva");
    scanf("%d %d",&n,&m);
    if (m<2)
        return 0;
    puts("vvedite matricu");
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            scanf("%d",&a[i][j]);
    for(i=0;i<n;i++)
    {
        for(j=0;j<m-2;j++)
        {
            *(*(a+i)+j)=*(*(a+i)+j+2);
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m-2;j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    getch();
}
а если с перестановкой двух первых в конец
то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
int _tmain(int argc, _TCHAR* argv[])
{
    int n,m,i,j;
    int a[20][20];
    int b , c;
    puts("razmeri massiva");
    scanf("%d %d",&n,&m);
    if (m<2)
        return 0;
    puts("vvedite matricu");
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            scanf("%d",&a[i][j]);
    for(i=0;i<n;i++)
    {
        b=*(*(a+i));
        c=*(*(a+i)+1);
        for(j=0;j<m-2;j++)
        {
            *(*(a+i)+j)=*(*(a+i)+j+2);
        }
        *(*(a+i)+m-2)=b;
        *(*(a+i)+m-1)=c;
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    getch();
}
Spotter
8 / 8 / 2
Регистрация: 09.11.2010
Сообщений: 130
09.11.2010, 21:14  [ТС]     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #5
VASSUV, Компилятор ругается на первую библиотеку, может её не первой включать нужно, или в другом проблема?
medik07
9 / 9 / 0
Регистрация: 09.10.2009
Сообщений: 46
09.11.2010, 21:16     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #6
если на чистом Си то можно первую библиотеку исключать!!!
То есть если пишешь на Borland C
#include"stdafx.h" его убери
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
09.11.2010, 21:19     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #7
medik07, Я бы сказал если пишешь не в MSVS (насколько я понимаю)
medik07
9 / 9 / 0
Регистрация: 09.10.2009
Сообщений: 46
09.11.2010, 21:23     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #8
Цитата Сообщение от ForEveR Посмотреть сообщение
medik07, Я бы сказал если пишешь не в MSVS (насколько я понимаю)
Именно это и хотел сказать!!! Просто еще с другими средами не знаком и точно не знаю нужен он там или нет!!!
Spotter
8 / 8 / 2
Регистрация: 09.11.2010
Сообщений: 130
09.11.2010, 21:23  [ТС]     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #9
Пишу в Visual Studio 2005, пробовал убирать первую библиотеку, всё равно та же ошибка выскакивает при компилировании ((
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
09.11.2010, 21:28     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #10
Spotter, Ну ошибку в студию что-ли
Spotter
8 / 8 / 2
Регистрация: 09.11.2010
Сообщений: 130
09.11.2010, 21:33  [ТС]     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #11
ForEveR, fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory
Build log was saved at "file
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
09.11.2010, 21:36     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #12
Spotter, Ну дык удалите включение файла и скажите ошибку, которая будет)
Spotter
8 / 8 / 2
Регистрация: 09.11.2010
Сообщений: 130
09.11.2010, 21:39  [ТС]     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #13
ForEveR, Синтаксическая ошибка. error C2061: syntax error : identifier '_TCHAR'
medik07
9 / 9 / 0
Регистрация: 09.10.2009
Сообщений: 46
09.11.2010, 21:41     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #14
C++
1
int _tmain(int argc, _TCHAR* argv[])
Предлагаю просто написать int main()!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2010, 21:54     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево.
Еще ссылки по теме:

C++ дан массив целых чисел переставить его элементы так, чтобы отрицательные оказались в начале, положительные - в конце
Двумерный динамический массив. Все нечетные строки матрицы сдвинуть циклически на К элементов влево C++
C++ Преобразовать массив так чтобы все ненулевые элементы предшествовали нулевым

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Spotter
8 / 8 / 2
Регистрация: 09.11.2010
Сообщений: 130
09.11.2010, 21:54  [ТС]     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево. #15
VASSUV, спасибо огромное, всё работает, разве что я уже сам подправлю вывод, чтобы не всё вместе было )) Выручил очень сильно, ещё раз спасибо огромное.

И спасибо всем, кто хоть чем-то помогал )
Yandex
Объявления
09.11.2010, 21:54     Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево.
Ответ Создать тему
Опции темы

Текущее время: 13:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru