Создать бесконечный двумерный массив с помощью malloc realloc - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Требуется создать бесконечный двумерный массив. С помощью malloc realloc. Идея такая: создаётся с помощью malloc массив из одного эл-та и в цикле while с помощью realloc создаётся по одному вводимому эл-ту бесконечный двумерный динамический массив. Почему не работает? Как создать с помощью malloc массив из одного эл-та?
//
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <malloc.h>
 
int _tmain()
{
setlocale(LC_CTYPE,"");
 // указатель на двумерный массив
char kombin[20]; // массив символьной комбинации
char glasn[6]={'a','e','u','i','o','y'}; // массив гласных (6)
int k=0, g=0, X, m=0, i=0, j=0, len,L,L1; // size_x размер строки, size_y размер столбца,size_z размер комбинации, 
// X - допустимое число гласных,( m=0; g=0,) счетчики совпадений комб и глас, k=0 - текущий индекс комбинации

printf("Назовите допустимое кол-во гласных букв ");
printf(" » ");
scanf_s("%d",&X);

for(k=0; k<=20; k++)
{ printf("vvedite kombin");
scanf_s("%s", & kombin[k]);
}
 
len=strlen(kombin);
 
// как объявить динамический массив? 
char p[][]=(char)malloc(sizeof(char)); // создаем единичный массив
 
while(1)
{
 
scanf_s("%d",& p);

if(p[i][j]==' ')  // вводим первую строчку до пробела
{
    i++;j=0;
    p[i][j]=(char)realloc(p,sizeof(char));
    continue;
}
 
for(int l=0; l<6; l++) // сначала проверка на гласные
{
if(glasn[l] == p[i][j]) 
{ g++; }
 
if(g >= X) // если количество совпадений с гласной > допустимого значения , то выходим из матрицы
{ 
    L1=i; L=j;
    system("pause");
    return 0;
}
 
}

if(p[i][j] == kombin[k]) // проверка на совпадения 
 
{ k++; } // если есть совпадение увеличиваем счетчик / индекс комбинации
 
else
{ k=0;} // если есть хоть одно последовательное несовпадение обнуляем счетчик
 
if(k == len) // если количество последовательных совпадений = длине комбинации, то переход на след.строку
{ 
    i++; j=0;
    p[i][j]=(char)realloc(p,sizeof(char));
    continue;
} 

p[i][j++]=(char)realloc(p,sizeof(char));

}

for(int i=0; i<L1; i++) // вывод строки на экран
{ 
   for(int j=0; j<L; j++)
   { 
       printf("%s", p[i][j]);
   }
 
}
 
system("pause");
return 0;
}

Решение задачи: «Создать бесконечный двумерный массив с помощью malloc realloc»

textual
Листинг программы
p[i][j] = (char) realloc(p, sizeof(char));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.333 из 5
Похожие ответы