С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/20: Рейтинг темы: голосов - 20, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 57

Выделить динамическую для двухмерного массива

20.11.2010, 12:43. Показов 3922. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Язык Си.
Нужно выделить динамическую для двухмерного массива mas1[i][j].скажем для 100 элементов матрицы.100 столбцов.
Потом заполнить числами(положительными) через fgetc(stdin).
Потом нужно подсчитать длину введенных строк и сравнить с другими если они не равны то выдать ошибку.
потом тоже самое сделать для mas2[p][k].
при исчерпании выделенной памяти выделить новую скажем 1.5x.
Потом подсчитать сколько раз первый mas1 встречается во втором mas2 и показать это количество
потом после этих операций освободить занятую память.
Помогите пожалуйста если можно с объяснением для понятности!!!

Добавлено через 16 часов 25 минут
кто нибудь хотя бы знает как делать некоторых из этих пунктов?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.11.2010, 12:43
Ответы с готовыми решениями:

Как выделить динамическую память для матрицы?
Как выделить динамическую память для матрицы?

Выделить динамическую память для 2-х мерного массива из N-строк
Помогите с задачей Задание: "Выделить динамическую память для 2-х мерного массива из N-строк след.вида:"

Как выделить память для двухмерного массива?
Как выделить память для двухмерного массива в С++ a=new int???

13
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
20.11.2010, 14:54
Цитата Сообщение от Gun# Посмотреть сообщение
массива
Цитата Сообщение от Gun# Посмотреть сообщение
строк
строка или массив?

Добавлено через 21 секунду
Цитата Сообщение от Gun# Посмотреть сообщение
кто нибудь хотя бы знает как делать некоторых из этих пунктов?
да, легко
0
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 57
20.11.2010, 20:56  [ТС]
выделить динамическу память для массива(матрицы).
при заполнение матрицы должно проверятся условие что все строки одинаковые.

Добавлено через 2 часа 27 минут
подскажите как заполнить массив через fgetc(stdin)?

Добавлено через 2 минуты
подскажите как заполнить массив через fgetc(stdin)?

Добавлено через 2 часа 56 минут
че никто незнает как помочь?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.11.2010, 21:17
Gun#, Помочь - не значит написать код за вас. Мне лично лень. Думаю остальным тоже.
0
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 57
20.11.2010, 21:19  [ТС]
я не упоминал написать.я просто не знаю как вообще начать.много всего прочитал но не понял.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
20.11.2010, 21:53
начну
C
1
2
3
4
5
int **arr1; int N=100;
arr1=(int**)malloc(sizeof(int)*N);
for (int i=0;i<N; i++)
arr[i]=(int*)malloc(sizeof(int)*N);  
// Память выделена для массива 100х100
Добавлено через 26 секунд
Дальше сам сможешь?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.11.2010, 21:55
go,
C++
1
int N=100;
Кажись лучше константой сделать.
0
1 / 1 / 0
Регистрация: 28.01.2009
Сообщений: 7
20.11.2010, 22:04
est neskolko funkcii... malloc ili calloc... poiwi v google
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
20.11.2010, 22:15
Цитата Сообщение от Abdujabbor Посмотреть сообщение
est neskolko funkcii... malloc ili calloc
а разницы почти нет (сиаллок предварительно обнуляет выделенную память)
0
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 57
21.11.2010, 00:00  [ТС]
Цитата Сообщение от go Посмотреть сообщение
начну
C
1
2
3
4
5
int **arr1; int N=100;
arr1=(int**)malloc(sizeof(int)*N);
for (int i=0;i<N; i++)
arr[i]=(int*)malloc(sizeof(int)*N);  
// Память выделена для массива 100х100
Добавлено через 26 секунд
Дальше сам сможешь?
а этот массив двумерный?
а как его заполнить через fgetc?
if(malloc(arr1)==NULL){
arr1=realloc(arr1,1.5*sizeof(int))
} что то типо такого при полном заполнение arr1?
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
21.11.2010, 11:41
Цитата Сообщение от Gun# Посмотреть сообщение
C
1
arr1=realloc(arr1,1.5*sizeof(int))
не 1,5 а новый размер
150
и в начале нужно по "указатели на строки" перераспределить память а потом уже...
0
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 57
21.11.2010, 14:25  [ТС]
Цитата Сообщение от go Посмотреть сообщение
не 1,5 а новый размер
150
и в начале нужно по "указатели на строки" перераспределить память а потом уже...
а как это правильно сделать?
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
21.11.2010, 14:56
Цитата Сообщение от Gun# Посмотреть сообщение
а этот массив двумерный?
да

Цитата Сообщение от Gun# Посмотреть сообщение
а как это правильно сделать?
посмотри здесь я отписывал
0
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 57
21.11.2010, 20:39  [ТС]
а значение для строк i а для столбцов?как это увидеть?
for(i=0;i<N;i++)
for(j=0;j<N;j++)
mas[i][j]=fgetc(stdin) выглядит так?
при заполнение массива я незнаю какую введу длину строки (могу 5 или 10) как он их правильно будет пронумировывать если в цикле for стоит N(100) .я хочу ввести 3 стоки длинной скажем по 5 но из за исловия я не смогу это сделать правильно пока не заполню до 100.как это можно исправить?или я что то путаю!

Добавлено через 3 часа 35 минут
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#define N 100
/*
 * 
 */
int ** Pamet1() {
    int **matrica1;
    int i;
 
    matrica1 = (int **) malloc(N * sizeof (int*));
    if (matrica1== NULL) {
        printf("Нехватка памяти.\n");
        exit(1);
    }
 
    for (i = 0; i < N; i++) {
        matrica1[i] = (int *) malloc(N * sizeof (int));
        if (matrica1[i] == NULL) {
            printf("Нехватка памяти.\n");
            exit(1);
        }
    }
    return matrica1;
}
 
 
void delPamet1(int **matice1) {
    int i;
    for (i = 0; i < N; i++) {
        free(matice1[i]);
    }
    free(matice1);
}
int ** Pamet2() {
    int **matrica2;
    int h;
 
    matrica2 = (int **) malloc(N * sizeof (int*));
    if (matrica2== NULL) {
        printf("Нехватка памяти.\n");
        exit(1);
    }
 
    for (h = 0; h < N; h++) {
        matrica2[h] = (int *) malloc(N * sizeof (int));
        if (matrica2[h] == NULL) {
            printf("Нехватка памяти.\n");
            exit(1);
        }
    }
    return matrica2;
}
void delPamet2(int **matice2) {
    int h;
    for (h = 0; h < N; h++) {
        free(matice2[h]);
    }
    free(matice2);
}
int main() {
int n;
int **matrica1;
int **matrica2;
printf("Введите количество рядов матрицы:\n");
if(scanf("%d",&n) !=1){
    printf("Неправильнный ввод.\n");
    return 0;
}
if(N<n){
    printf("Неправильнный ввод.\n");
    return 0;
}
 
printf("Введите матрицу №1:\n");
matrica1=Pamet1;
 
printf("Введите матрицу №2\n");
matrica2=Pamet2;
 
}
я выделил две памяти по 100 на 100 для двух матриц.
Помогите их заполнить через fgetc(stdin).не полностью а так как захочет пользователь.(3x5 или 22х10)
при нажатии ctrl d переходил на заполнение второй матрицы.
и как я могу сравнить строчки который ввел(их длину).я знаю что надо делать через strlen вся проблема в том что у меня не фиксированное количество.
помогите пожалуйста!!!

Добавлено через 47 минут
учитывая еще количество ввденных сторк.

Добавлено через 1 час 9 минут
HELP....

Добавлено через 1 минуту
HELP....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2010, 20:39
Помогаю со студенческими работами здесь

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

Подгрузить 1 строку двухмерного массива, в ф-цию для одномерного массива
Здравствуйте. Вот играюсь я с массивами и не совсем хватает мне знаний в этом деле. Думал игратся по аналогии с другими языками, да что то...

Подскажите, как выделить динамическую память в функции?
Добрый вечерок^_^ Подскажите, как выделить динамическую память под матрицу внутри функции) Если что, задание: #include...

Для двухмерного массива В (20,10) найти минимальный элемент для каждой строки
Написать программу обрабатывающую двумерный массив с использованием методов класса Array . Задача: для двухмерного массива В (20,10)...

c++, функция для двухмерного массива
написать функцию, проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru