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

Двумерный массив и структуры - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
parenn
0 / 0 / 0
Регистрация: 26.01.2011
Сообщений: 5
26.01.2011, 15:23     Двумерный массив и структуры #1
Здравствуйте! Я первый семестр изучаю программирование и никогда до этого с ним не сталкивался! Скоро у меня контрольная по Си на которой надо написать код программы на листе бумаге, без компьютера! Может попасться два вида заданий - или задание связанное с двумерным массивом или задание связанное со структурами. С двумерным массивом - сложить все элементы введенного столбца, поменять столбцы местами, найти наименьшее число в каждом столбце. Структуры - организовать поиск по названию. У меня вопрос - можете показать на примере как сделать подобные задания? У всех заданий с двумерным массивом основа будет одна и та же? Или можете обьяснить логику выполнения? Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2011, 15:23     Двумерный массив и структуры
Посмотрите здесь:

Дан двумерный массив размерностью Н. сформировать одномерный массив из элементов заданного массива расположенных над главной диагональю. C++
Дан двумерный массив размерностью 4*5. Сформировать одномерный массив C++
C++ Как можно вложить двумерный массив в двумерный?
Дан двумерный массив. Сформировать одномерный массив из элементов заданного массива, расположенных под побочной диагональю. C++
Структуры. Дан массив записей, содержащих дату и время. Упорядочить этот массив в порядке «возрастания» C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VenCarbon
32 / 31 / 3
Регистрация: 14.12.2010
Сообщений: 158
26.01.2011, 16:28     Двумерный массив и структуры #2
parenn,
ты лучше в аську мне напиши, вместе разберемся.
377759169
parenn
0 / 0 / 0
Регистрация: 26.01.2011
Сообщений: 5
26.01.2011, 16:41  [ТС]     Двумерный массив и структуры #3
Начало у всех заданий связанны с двумерным массивом одинаково? В Си ?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define RINDA 3
#define KOLONA 5
 
void main()
{
 int *mas, *vector, rez, i, j;
 clrscr();
 randomize();
 
 printf("Sakummasivi\nVektors\n");
 for(i=0; i<KOLONAS; i++)
   printf("%3d", *(vector+i)=random(5));
printf("\n\nDivdimensiju masivs\n");
 for(i=0; i<RINDAS; i++)
   {
    for(j=0; j<KOLONAS; j++)
      printf("%3d", *(mas+i*KOLONAS+j)=random(5));
    printf("\n");
   }
VenCarbon
32 / 31 / 3
Регистрация: 14.12.2010
Сообщений: 158
26.01.2011, 18:04     Двумерный массив и структуры #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
 
void main() {
    int arr[10][10]; //объявляем двумерный массив 10*10
    int i, j, col, sum = 0;
    //инициализация массива вводом с клавиатуры
    for (i = 0; i < 10; i++) {
        for (j = 0; j < 10; j++) {
            scanf("%d", &a[i][j]);
        }
    }
    //обработка: например, складываем все элементы введенного столбца:
    scanf("%d", &col); //считываем номер столбца
    for (i = 0; i < 10; i++) {
        sum += a[i][col];
    }
    printf("%d", sum);
}
Для того, чтобы что-то обработать, надо сначала чтобы было, ЧТО обрабатывать. поэтому, инициализация массивов будет везде одинаковая. /* здесь - ввод с клавиатуры, но можно еще заполнить массив случайных образом */

Здесь размерность массива задана изначально, 10 * 10. Но можно еще поработать с динамикой... Это немного сложнее, поэтому я не стала.

Обратите внимание, что нумерация строк/столбцов начинается с 0. Поэтому, номер столбца здесь может быть от 0 до 9 (!). Здесь нет проверки этого условия, но при желании, можно написать.
parenn
0 / 0 / 0
Регистрация: 26.01.2011
Сообщений: 5
26.01.2011, 18:15  [ТС]     Двумерный массив и структуры #5
А чтобы пользователь сам вводил размер двумерного массива - это всё усложняет? И ещё вопрос про вторую часть - как найти наименьшее число всех столбцов? Спасибо! У меня просто нет аськи, есть скайп!
VenCarbon
32 / 31 / 3
Регистрация: 14.12.2010
Сообщений: 158
26.01.2011, 18:28     Двумерный массив и структуры #6
C
1
2
3
4
5
scanf("%d", size);
int arr=(int **)calloc(size,sizeof(int*));
for (i = 0 ; i < size; i++) {
    arr = (int*)calloc(size,sizeof(int));
}
Нужно будет еще добавить вот этот кусок кода до инициализации. Это для создания массива размера size*size.
Информация по функции CALLOC
parenn
0 / 0 / 0
Регистрация: 26.01.2011
Сообщений: 5
26.01.2011, 18:34  [ТС]     Двумерный массив и структуры #7
а тогда что вместо 10 писать в объявлении массива?
VenCarbon
32 / 31 / 3
Регистрация: 14.12.2010
Сообщений: 158
26.01.2011, 18:43     Двумерный массив и структуры #8
C
1
2
3
4
5
6
7
8
9
for (j = 0; j < size; j++) {
    min = a[0][j];
    for (i = 0; i < size; i++) {
        if (a[i][j] < min) {
            min = a[i][j];
        }
    }
    printf ("%d", min, " min ", j, "ого стоблца");
}
Как-то так. Писала без компилятора, так что могут быть ошибки.

Добавлено через 1 минуту
Цитата Сообщение от parenn Посмотреть сообщение
а тогда что вместо 10 писать в объявлении массива?
size
должно выглядеть так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void main() { 
    int i, j, col, sum = 0, size;
    scanf("%d", size);
    int arr=(int **)calloc(size,sizeof(int*));
    for (i = 0 ; i < size; i++) {
        arr = (int*)calloc(size,sizeof(int));
    }
    //инициализация массива вводом с клавиатуры
    for (i = 0; i < size; i++) {
        for (j = 0; j < size; j++) {
            scanf("%d", &a[i][j]);
        }
    }
    //бла бла бла и прочие обработки
}
parenn
0 / 0 / 0
Регистрация: 26.01.2011
Сообщений: 5
27.01.2011, 01:18  [ТС]     Двумерный массив и структуры #9
Спасибо! надеюсь мне это поможет на контрольной, а то уже буду 3-ий раз переписывать!

Добавлено через 5 часов 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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define RJADI 3
#define KOLONI 5
void main()
{
 int vector[KOLONI], i, j, arr[RJAD][KOLONI];
 clrscr();
 randomize();
 
 printf("Sakummasivi\nVektors\n");
for(i=0; i<KOLONI; i++)
  {
   vector[i] = random(5);
   printf("%3d", vector[i]);
  }
 
 printf("\n\nDvumernij masiv\n");
 for(i=0; i<RJAD; i++)
   {
    for(j=0; j<KOLONI; j++)
     {
      arr[i][j] = random(5);
      printf("%3d", arr[i][j]);
     }
    printf("\n");
   }
Добавлено через 1 час 21 минуту
ещё вопрос - как поменять два ряда местами? Ряды вводит пользователь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2011, 02:37     Двумерный массив и структуры
Еще ссылки по теме:

Двумерный массив (поменять статический массив на динамический) C++
Переписать массив строк из файла в двумерный массив типа CHAR C++! C++
Двумерный символьный массив и массив указателей на строки C++

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

Или воспользуйтесь поиском по форуму:
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 469
27.01.2011, 02:37     Двумерный массив и структуры #10
parenn, Про ряды, можешь создать дополнительный одномерный массив, и через него меняешь всю строку целеком.
Или еще проще через допонительную перемнную, но тут менять придется по одному элементу.

Говоря по русски задача такая же как перелить воду из стакана А в стакан Б.
Тебе нужно использовать что то дополнительное, например стакан С.
Yandex
Объявления
27.01.2011, 02:37     Двумерный массив и структуры
Ответ Создать тему
Опции темы

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