Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вставка массивов 
V
    Опции темы
CatGav
Дата 6.11.2012, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дана матрица размером 5 на 6 и два одномерных массива длинной в 6 символов, Задание вставить одномерные массивы в соответствующие строчки и столбцы матрицы (номера строки и столбца вводятся с клавиатуры) Вот что у меня вышло, помогите доофрмить цикл вставки массивов, а то ерунда выходит.


Код



#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include <time.h>

using namespace std;
int main(array<System::String ^> ^args)
{
   
    int p, q; // случ числа
    int i, j;
    int x1, y1; 
    int n = 5; // для матрицы
    int m = 6;  //  для матрицы 
    int z=6;    // для массивов x y 
              int x[6];  // массив x  
    int y[6];  // массив у
    int a[5][6];
    cout << " Isxodnaya matrica:" << endl;    
    srand(time(NULL));
    for (int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            a[i][j]=rand() % 90 + 10;
            cout << a[i][j] << " ";
        }
        cout << endl;
    }

    cout << " Isxodnii massiv x : ";    
     srand(time(NULL));
    for (int x1 = 0; x1 < z; x1++)
    {
        x[x1]=rand() % 40 + 10;
        cout << x[x1] << " ";
        
    }
    cout <<endl;

    cout << " Isxodnii massiv y : ";    
     srand(time(NULL));
    for (int y1 = 0; y1 < z; y1++)
    {        y[y1]=rand() % 50 + 10;
        cout << y[y1] << " ";
    }
    cout <<endl;

    {
        cout << " vvedite nomer stroki ne bolee 6 ";
        cin >> p;
        if(p<=n+1)
         {    
            for(int i=n; i>=p; i--)
            for(int j=0; j<m; j++)
            a[i][j]=a[i-1][j];
            for(int j=0; j<m; j++)
    //        for (int x1 = 0; x1 < z; x1++)      цикл вставки массива записывается при этих условиях ?
            
            a[p-1][j]=x[x1]; 
            n++;
        
        }
        else cout << " neverno \n";
    }



    {
        cout << " vvedite nomer stoldca ne bolee 7 ";
        cin >> q;
        if(q<=m+1)
            {   
            for(int j=m; j>=q; j--)
            for(int i=0; i<n; i++)            
            a[i][j]=a[i][j-1];
            for(int i=0;i<n;i++) 
    //        for (int y1 = 0; y1 < z; y1++)
            
            a[i][q-1]=y[y1]; 
            m++;
                
         }
         else cout << "neverno\n";
    }
  
    cout << " Rezultat :" << endl;    
    for (int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        cout << a[i][j] << " ";
        cout << endl;
    }

    _getch();
    return 0;
}



PM MAIL   Вверх
feodorv
Дата 7.11.2012, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



В итоге матрица какого размера должна получиться???
По коду я так понял, что 6 на 7: (5+один дополнительный столбец) на (6+одна дополнительная строка).
Но если так, то почему эти манипуляции производятся над матрицей с фиксированным размером 5 на 6:
Цитата(CatGav @  6.11.2012,  22:11 Найти цитируемый пост)
    int a[5][6];

Как в такую матрицу, в которой не предусмотрено место для новых строк и столбцов, можно хоть что-то добавить? Только с выходом за пределы массива.
Следовательно, изначально в матрице нужно было оставить место для вставок:
Код

    int a[6][7];

хотя и делать вид по-началу, что матрица-то 5 на 6.

После очередной вставки размеры матрицы нужно менять: n++ (после вставки столбца) и m++ (после вставки строки), а то опять ерунда выйдет)))


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
CatGav
Дата 7.11.2012, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да матрица должна быть  на выходе размером 6 на 7, теперь в стрчке и столбце  вставляются первые элементы массивавов,  как я понял необходимо вводить условие для строки  for (int x1 = 0; x1 < z; x1++)   , для столбца  for (int y1 = 0; y1 < z; y1++) если да то в как это должно выглядеть.
PM MAIL   Вверх
feodorv
Дата 8.11.2012, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(CatGav @  7.11.2012,  19:07 Найти цитируемый пост)
как я понял необходимо вводить условие для строки

Да нет. Вставки как раз по 6 элементов как были, так и остаются.

Мой Вам совет: заполните матрицу не случайными значениями, а просто положительными возрастающими, а вставляемые строки и столбцы - какими-то отрицательными значениями. Тогда при печати матрицы сразу будет видно, куда и как вставились новые элементы:
Код

a[i][j]=i*10+j;
Код

x[x1]=-10*x1;
Код

y[y1]=-y1;



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
CatGav
Дата 8.11.2012, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хмм, можт я что не так понял но вот то что он сейчас выдае при моих условиях заполнениях массов и матрицы. При ваших условиях он вставляет нули в соответствующие строчки и столбцы. 

http://s1.ipicture.ru/uploads/20121108/fRlyf5op.png

Это сообщение отредактировал(а) CatGav - 8.11.2012, 16:00
PM MAIL   Вверх
CatGav
Дата 8.11.2012, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



С программой разабрался, спасибо за помощь
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

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


 




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


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

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