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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
ivpoed
1 / 1 / 0
Регистрация: 21.03.2010
Сообщений: 38
#1

Индексация двухмерного массива char - C++

26.03.2010, 23:49. Просмотров 1377. Ответов 4
Метки нет (Все метки)

Подскажите пожалуйста, как правильно передать в функцию указатель на двухмерный массив char и как его индексировать?
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2010, 23:49     Индексация двухмерного массива char
Посмотрите здесь:

Заполнение двухмерного массива типа char символами цифр - C++
Приветствую всех! Разбираю одну задачу, в которой двухмерный символьный массив заполняется цифрами, представленными в качестве символов....

Индексация массива - C++
Ребят еще такой вопрос есть формула выглядит в след виде: сумма (k/(Xк+k)) где k=1,2,3,4...n. Сумму нужно посчитать циклически, но вопрос в...

Индексация массива C++ - C++
Форум,привет. Повесили мне тут задачу, причем на плюсах делать надо. Суть: идет бесконечная строка символов, из которой отсеиваются только...

Индексация элементов массива - C++
Всем привет! Есть следующий код: const double c = { // particle velocities {0, 0}, // zero {1,...

Индексация массива в динамической памяти - C++
Всем привет! Вроде очень простой вопрос, но я не смог найти на него ответа. Вот код: #include <iostream> using namespace std; ...

Медленнее ли индексация массива, чем работа с указателем? - C++
Преподаватель донимает меня, что я использую индексацию для работы с массивами, вместо того, чтобы использовать смещение и разъименовывание...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9460 / 5473 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
27.03.2010, 00:37     Индексация двухмерного массива char #2
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
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define ROWS 5
#define MAX_STR 256
 
void printRows(char **arr, size_t rows){
    size_t i;
    for ( i = 0; i < rows; ++i )
        printf("%s\n", arr[i]);
}
 
int main(void){
    char buf[MAX_STR], *p, **arr;
    int i;
    
    if ( ( arr = (char**)malloc(sizeof(char*) * ROWS) ) == NULL ){
        fprintf(stderr, "Memory error!\n");
        exit(1);
    }
    printf("Enter %d strings:\n", ROWS);
    for( i = 0; i < ROWS; ++i ){
        if ( !fgets(buf, MAX_STR, stdin) ){
            fprintf(stderr, "Can't get row");
            exit(1);
        }
        if ( p = strrchr(buf, '\n') )
            *p = '\0';
        if ( !*buf ){
            fprintf(stderr, "Empty rows not allowed!\n");
            exit(1);
        }
        if ( ( arr[i] = strdup(buf) ) == NULL ){
            fprintf(stderr, "Memory error!\n");
            exit(1);
        }
    }
    printf("You have entered:\n");
    printRows(arr, ROWS);
    
    for ( i = 0; i < ROWS; ++i )
        free(arr[i]);
    free(arr);
    
    exit(0);
}
Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
27.03.2010, 00:47     Индексация двухмерного массива char #3
Хороший вопрос.
Есть 2 подхода.
1. (школярский)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#define N 20
#define M 35
fm(int A[N][M]....)
{
   for(i=0;i<n;i++)
     for(j=0; j<M j++) 
        if (A[i][j]==0) Oh!
}
main()
{
  int B[N][M];
  fm(B);
}
2й -изощренный
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int **CreateM(int n, int m)
{  int **a;
     a = (int **)malloc(n * sizeof(int *));
     for(i=0; i<n; i++)
       a[i] = (int *) malloc(m*sizeof(int));
     return a;
}
fm(int **x, n, m)
{
   for(i=0;i<n;i++)   // абсолютно тоже самое! 
     for(j=0; j<M j++) 
        if (A[i][j]==0) Oh!
}
main()
{
  int **B;
  B = CreateM(n, m);
  fm(B, n, m);
}
2-й подход значительно гибче. Размерность массива ты можешь определить по ходу счета,
часто она зависит от исходных данных
Кроме того, при некоторой модификации он дает возможность делать строки разной длины.
ivpoed
1 / 1 / 0
Регистрация: 21.03.2010
Сообщений: 38
27.03.2010, 08:54  [ТС]     Индексация двухмерного массива char #4
Спасибо большое. Я всё пытался с одним указателем. Не думал, что тут нужен указатель на указатель.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2010, 14:01     Индексация двухмерного массива char
Еще ссылки по теме:

Удаление двухмерного массива - C++
Доброго дня. Выделяем память под квадратную матрицу --&gt; заполняем --&gt; освобождаем занятую память . Следующий вопрос : при повторном...

Сортировка двухмерного массива по i и j - C++
Нужно написать алгоритм, который создавал бы массив чисел, при чем так, чтобы каждый последующий элемент (по i или по j) был меньше...

Сортировка двухмерного массива - C++
Дан двухмерный массив. Отсортировать столбики массива, поставив вначале четные элементы,а потом нечетные, не меняя при этом их порядок...

Сортировка двухмерного массива - C++
Здравствуйте, Нужно применить сортировку к текстовой базе данных. Поля базы только string. Я записываю БД в двумерный массив string. ...

Сортировка двухмерного массива - C++
Помогите!!!Нужно отсортировать двухмерный массив с использованием указателя. #include&lt;iostream&gt; #include&lt;stdlib.h&gt; #include&lt;time.h&gt; ...

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


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

Или воспользуйтесь поиском по форуму:
Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
27.03.2010, 14:01     Индексация двухмерного массива char #5
ivpoed, вообще-то можно и с одним указателем. Делаем сами некоторую работу за транслятор,
код чуть менее понятный, но покороче
C
1
2
int A[N*M];
 A[i*M+j] = ... // это то же, что и A[i][j] в предыдущих вариантах
Yandex
Объявления
27.03.2010, 14:01     Индексация двухмерного массива char
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru