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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с массивами, опускание строк 
:(
    Опции темы
exo
Дата 19.2.2007, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите найти решение программы. 
сам запутался не знаю что делать

задание:
----------------------------------------------------------------------------------
Даны целочисленная прямоугольная матрица [n*m] и массив целых чисел из m элементов.
Вставить массив в матрицу после строки с заданным номером (i).
----------------------------------------------------------------------------------

ЗАДАЕТСЯ i-тоя строка. ниже стоящие строки опускаются вниз на одну.
в получившуюся строку (пустую) вставляется одномерный массив.

НЕЗНАЮ КАК В МАТРИЦЕ  ОПУСТИТЬ ВНИЗ СТРОКИ.
(буфер не задействовать)

пример:

массив ===> 3 32 43 7 82 74 71

матрица (6*7) :

2 0 5 6 3 3 2 (1 строка)
0 7 1 3 4 5 4 (2 строка)
1 5 3 6 8 3 2 (3 строка)
4 3 4 0 0 7 9 (4 строка)
3 0 1 4 5 2 2 (5 строка)
5 3 5 2 0 6 9 (6 строка)
. . . . . . . . (7 строка)
(7-ая строка пустая не заполненая, она для строк которые будут опускатся) 

задается i-тоя строка = 4

(ответ должен выглядеть примерно так)

матрица (7*7) : 
2 0 5 6 3 3 2 (1 строка)
0 7 1 3 4 5 4 (2 строка)
1 5 3 6 8 3 2 (3 строка)
4 3 4 0 0 7 9 (4 строка)

3 32 43 7 82 74 71 (5 строка) - массив

3 0 1 4 5 2 2 (6 строка)
5 3 5 2 0 6 9 (7 строка)

как опустить строку ?
PM MAIL   Вверх
Dray
Дата 20.2.2007, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


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

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



Код
//n строк
//m столбцов
//i итый элемент
for (int j=n-1; j>(i+1); j--)
{
   for (int k=0; k<m; k++)
   {
      arr[j][k] = arr[j-1][k];
   }
}



--------------------
忍者

user posted image
PM MAIL   Вверх
exo
Дата 20.2.2007, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



должно работать ?
PM MAIL   Вверх
Dray
Дата 20.2.2007, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


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

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



Ну я не стал писать программу целеком, только алгоритм опускания строки.
Смотри:
Начинаешь с самой нижней строки, - она у тебя пустая.
Последовательно, слева на право, переносишь значения из каждой ячейки предыдущей строки в твою текущую строку.
И так поднимаешься снизу вверх, до iтой строки значения из строки i попадут в строку i+1.
Остается только засунуть массив в итую строку.  smile 

Это сообщение отредактировал(а) Dray - 20.2.2007, 00:41


--------------------
忍者

user posted image
PM MAIL   Вверх
exo
Дата 20.2.2007, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



за текст спачибо!
все работает !


толко теперь новая проблема :
          я вставляю массив после i-той строки 
           ---> а как вывести на экран получившийся массив ?

Это сообщение отредактировал(а) exo - 20.2.2007, 01:11
PM MAIL   Вверх
Dray
Дата 20.2.2007, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


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

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



Всмысле? Получившуюся матрицу? Тогда так:
Код
for (int i=0; i<n; i++)
{
   for (int j=0; j<m; j++)
   {
      printf ("%d ", arr[i][j]);
   }
   printf ("\n");
}



--------------------
忍者

user posted image
PM MAIL   Вверх
exo
Дата 20.2.2007, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



нет не то..
тогда как вставить сам массив
и эту получившуюся матрицу вывести на экран ?

Добавлено @ 01:33 
у меня токой бред написан :

//k -это i-тоя строка
//------------------------------//опускание строк
      int z,m2,buf;

     for (z=7; z>=(k+1); z--)
    { for (m2=0; m2<m; m2++)
   { a[z][m2] = a[z-1][m2]; }
    }
     // a[k+1][m2]=x[j];
     // a[z][m2]=a[k+1][m2];
 
 {buf=x[j];
 x[j]=a[k+1];
 a[k+1]=buf;}
    for (z=0;z<8;z++)
      {    for (m=0;m<7;m++)  printf("%5d",a[z][m]);  printf("\n");}

не могу понять как вставить массив 
что то попробовал через buf
может и правильно но как вывести результат ?
PM MAIL   Вверх
Dray
Дата 20.2.2007, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


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

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



Стоп. Я тут ща не то написал.
Код

//n строк
//m столбцов
//i итый элемент
for (int j=n-1; j>(i+1); j--)
{
   for (int k=0; k<m; k++)
   {
      arr[j][k] = arr[j-1][k];
   }
}

Так не верно, верно вот так:
Код

//n строк
//m столбцов
//i итый элемент
for (int j=n-1; j>=(i+1); j--)
{
   for (int k=0; k<m; k++)
   {
      arr[j][k] = arr[j-1][k];
   }
}


Это сообщение отредактировал(а) Dray - 20.2.2007, 02:08


--------------------
忍者

user posted image
PM MAIL   Вверх
exo
Дата 20.2.2007, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



че не то написал?
PM MAIL   Вверх
Dray
Дата 20.2.2007, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


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

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



Короче вот:
Код
#include <stdio.h>
#include <stdlib.h>

int main ()
{
    const int N=5, M=4;
    int matr[N][M];
    int arr[M];

    //Заполняем матрицу случайными числами
    for (int i=0; i<N-1; i++)
    {
        for (int j=0; j<M; j++)
        {
            matr[i][j] = rand ()%10;
            printf ("%d ", matr[i][j]); //Заодно выведем на экран
        }
        printf("\n");
    }
    //printf ("\n");
    //Обнуляем последнюю строку (типа пустая =))
    for (int i=0; i<M; i++)
    {
        matr[N-1][i] = 0;
        printf ("%d ", matr[N-1][i]); //Заодно выведем на экран
    }
    printf ("\n\n");
    //Заполним массив
    for (int i=0; i<M; i++)
    {
        arr[i] = rand () % 10;
        printf ("%d ", arr[i]); //Заодно выведем на экран
    }
    printf ("\n\n");

    int row = 1; //Итая строка (от 0 до 4)
    //Спускаем всё вниз
    for (int j=N-1; j>=(row+1); j--)
    {
        for (int k=0; k<M; k++)
        {
            matr[j][k] = matr[j-1][k];
        }
    }
    //Запихиваем массив
    for (int i=0; i<M; i++)
    {
        matr[row][i] = arr[i];
    }
    //Выводим всё целеком
    for (int i=0; i<N; i++)
    {
        for (int j=0; j<M; j++)
        {
            printf ("%d ", matr[i][j]);
        }
        printf("\n");
    }
}

Что не понятно спрашивай. Но отвечу завтра, я пошел спать.  smile 


--------------------
忍者

user posted image
PM MAIL   Вверх
exo
Дата 20.2.2007, 02:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



все нормально 
все работает
все получилось !

правда я твою прогу не смог запустить !

Добавлено @ 02:47 
 а не знаешь как нарисовать таблицу и можно ли ее нарисовать?
PM MAIL   Вверх
Dray
Дата 20.2.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


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

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



А у тебя какой компилятор?
Таблицу можно рисовать спец. символами, в цикле.
Что-то типа вот этого:
╔════════════════════════════════════════╗
Только программно.
Цитата(exo @  20.2.2007,  02:44 Найти цитируемый пост)
правда я твою прогу не смог запустить !

Тут тогда уж по-подрбнее. Какие сообщения? rand - может иногда не работать, вместо него можно использовать random (...)

Это сообщение отредактировал(а) Dray - 20.2.2007, 10:53


--------------------
忍者

user posted image
PM MAIL   Вверх
Dov
Дата 20.2.2007, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(exo @  19.2.2007,  22:33 Найти цитируемый пост)
как опустить строку ?


Цитата(Dray @  19.2.2007,  23:41 Найти цитируемый пост)
алгоритм опускания строки.


Ребята, опускают в другом месте и по другому поводу.  smile 
В матрице строки сдвигают вверх/вниз, а колонки - влево/вправо. В нерусской терминологии есть даже специальное слово для этого - shift, что значит сдвиг.  smile 




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Rockie
Дата 20.2.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(exo @  20.2.2007,  02:44 Найти цитируемый пост)
все нормально
все работает
все получилось !

правда я твою прогу не смог запустить!


главное хорошо что все хорошо =)




--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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