Учитывая, что каждая строка char заканчивается символом «E», а последняя строка заканчивается символом «T». Я изо всех сил пытаюсь распечатать строки символов, заданные пользователем, за исключением завершающих символов.
- Обязательно использовать одну из функций malloc(), calloc(), realloc() и free().
Пример ввода и вывода может быть таким:
Input | Output |
---|---|
A B C E V F E K T |
A B C V F K |
Моя попытка:
#include <iostream>
#include <sstream>
#include <string>
#include <math.h>
#include <vector>
#include <stdio.h>
using namespace std;
int main()
{
char c;
int rowsize = 0 ,colsize = 0;
char** chararr;
chararr = (char**)malloc(sizeof(char*));
vector<int> colsizes;
char chars[20];
do {
cin >> c;
colsize++;
for(int i=0; i<colsize;i++) {
chars[i] = c;
}
if ( c == 'E') {
++rowsize;
colsizes.push_back(colsize);
chararr = (char**)realloc(chararr,rowsize*sizeof(char*));
for (int i = 0; i < rowsize; ++i){
*(chararr + i) = (char*)malloc(colsizes[i] * sizeof(char));
for (int j = 0; j < colsizes[i]; ++j) {
chararr[i][j] = chars[j];
}
}
colsize = 0 ;
continue;
}
}while(c != 'T');
colsizes.push_back(colsize);
for (int i = 0; i < rowsize; ++i){
for (int j = 0; j < colsizes[i]; ++j) {
std::cout << chararr[i][j] << " ";
}
std::cout << endl;
}
}
alloc
, вам лучше использовать C... Но текущий код - C++ и не использует malloc... - person Serge Ballesta   schedule 04.03.2021new
/delete
иnew[]
/delete[]
, которые безопаснее использовать (поскольку они не просто выделяют память) - person Fareanor   schedule 04.03.2021