Создать бесконечный двумерный массив с помощью 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));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д