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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с массивами, написание двумерного массива 
V
    Опции темы
Alexsandr_14
  Дата 10.1.2008, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



есть следующее задание:

написать программу; пользователь вводит произвольное количество чисел, программа формирует двумерный массив в виде квадратной матрицы все недостающее элементы  заменяются 0; ну естественно это должно все выводится на экран;
как записать данные с клавиатуры в массив двумерный?
PM MAIL   Вверх
orthrus
Дата 10.1.2008, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

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



при помощи 2-х циклов, например так:

Код

for (int i=0; i<size; ++i)
     for (int j=0; j<size; ++j) 
          std::cin >> mass[i][j];



--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
Alexsandr_14
Дата 10.1.2008, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



как записать данные с клавиатуры в  двумерный массив? 
PM MAIL   Вверх
Dray
Дата 10.1.2008, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Alexsandr_14 @  10.1.2008,  14:52 Найти цитируемый пост)
как записать данные с клавиатуры в  двумерный массив?

В коде, который написал orthrus, как раз это и происходит.




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

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


Новичок



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

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



а массив обявлять так int mass[i][j]?
и как вівисти его на єкрани тоже с помощью двох циклов например так:
Код


void printmasivv(int a[][]){
int i;
int j;

for(i=0; i<=n; i++){

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

}
}
 

Это сообщение отредактировал(а) Alexsandr_14 - 10.1.2008, 15:23
PM MAIL   Вверх
JackYF
Дата 10.1.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(Alexsandr_14 @  10.1.2008,  14:22 Найти цитируемый пост)
mass[i][j]

вместо i,j - конкретные числовые значения либо константы.

Добавлено через 14 секунд
в остальном вроде бы верно.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Alexsandr_14
Дата 10.1.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void printmasivv(int a[][3]);
int main()
{

    int j,i,n=2;
    int mas[2][3];

    for(i=0; i<n; ++i){
    for(j=0; j<n; ++j)
    {
       scanf("%d", &mas[i][j]);
    }
    }
    printmasivv(mas);
    return 0;

}

void printmasivv(int a[][3])
{
        int i;
        int j;

        for(i=0; i<=2; i++)
        {
        for(j=0; j<=2; j++){
        printf("%d ", a[i][j]);
        }
        printf("\n");
        }
    getch();
}

у меня получился вот такой код!он както заполняет матрицу но мне надо чтобы пользователь вводил любое количество цифр  до определенного момента(например пока пользователь не введет отрицательное значение напр. -1) и потом это все отображалось на экране в виде матрицы 3*3 и если пользователь ввел всего 3числа матрица должна принять следующий вид 
Код

1 5 9
0 0 0 
0 0 0

а если сильно много ввел то взять всего лишь первые 9 чисел как это можно реализовать?***

PM MAIL   Вверх
Annihilator
Дата 10.1.2008, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

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



может как-нибудь вот так
Код

void printmasivv(int a[][3]);
int main()
{

    int j,i;
    const int n=2,m=3;
    int mas[3][3]={0},fl=0,temp;

    for(i=0; i<n; i++)
    {
        for(j=0; j<m;j++)
        {
            printf("Enter the value");
            scanf("%d", &temp);// сначала считаем переменную
            if (temp>=0) mas[i][j]=temp;//если неотрицательн, то в масив её
            else
            {
                fl=1;//иначе признак того,что было отрицательное число
                break;// выход из внутреннего цикла
            }
        }
        if (fl) break; //если был признак отриц. числа, то и из внешнего цикла выходим
    }
    printmasivv(mas);
    return 0;
}

На оптимальность не претендую


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Alexsandr_14
  Дата 10.1.2008, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо всем за помощь!
 ! 
archimed7592
Не забывай помечать тему решённой.


Это сообщение отредактировал(а) archimed7592 - 10.1.2008, 23:45
PM MAIL   Вверх
Alexandr507
Дата 3.11.2009, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



не думаю что из за моего вопроса стоит создавать тему. напишу сюда.

пишу программу, в ней двумерный массив, но индексы изначально не известны

компилируется, но если раскомментить 20 и 30 строчки, то нет
Код

#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;

int storona(int);

int main()
{
    char slovo[256];
    cin.getline(slovo, 256);
    int kolvo = strlen(slovo);
    cout<<endl<<kolvo<<endl;

    const int size = storona(kolvo);
    cout<<size;
    cout<<endl;


/*    char messag[size][size];
    
        for (int i=0; i<x; i++)
    
        {
            for (int j=0, int a=0; j<x, a<kolvo; j++, a++)
        {
            slovo[z]=messag[i][j];
        }

    }*/

    return 0;
}


int storona(int key)
{
    int koren = sqrt(key); 
    int temp = pow(koren,2);

    if (key == temp)
        return koren;
    
    else
        return ++koren;
}


вообще никак нельзя таким способом сделать ?  когда  просто объявляю 
Код
const int size = 3 ;
допустим, то все отлично, а так 
Код

const int size = storona(kolvo);

то жалуется на массив  
Код

char messag[size][size]  

будто он   объявлен нулевыми значениями.
подскажите что можно сделать, с уважением.

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


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Alexandr507, попробуй найти ответ тут: http://forum.vingrad.ru/forum/topic-269794/kw-faq-c++.html
Если вдруг не найдешь, тогда спрашивай - скажу где читать.
PM   Вверх
Alexandr507
Дата 4.11.2009, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



bsa, спасибо, все оказалось не сложно, правда с шаблоном vector до конца не разобрался, зато более доступный способ с помощью new/delete работает smile 

Код

...
    char **messag = new char*[size1];
    for (i = 0; i < size1; i++)
        messag[i] = new char[size2];
...
    for (i = 0; i < size1; i++) delete[]messag[i];
    delete[]messag;
...

PM MAIL   Вверх
bsa
Дата 5.11.2009, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Alexandr507, тоже самое можно сделать через вектор так:
Код
std::vector<std::vector<char> > messag(size1, std::vector<char>(size2));
Но лучше делать так:
Код
typedef std::vector<std::string> StringVector;
StringVector messag;
Лучше потрать два часа (или сколько там тебе нужно) на то, чтобы разобраться с STL, чтобы не тратить десять раз по часу, чтобы изобретать один и тот же велосипед.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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