C/C++

Ввод массива строк с помощью рекурсии

Помогите, пожалуйста, написать рекурсивную функцию, которая вводит строки
Извините, но при таком условии вам никто не поможет. Если вы обучаетесь, и было дано задание то помогателям нужно знать эту поднаготную, чтобы не гадать на кофейной гуще. А именно: какую тему вы изучаете, что говорил преподаватель (он правит балом), какие инструменты можно использовать. И главное Си или С++?
ВП
Владимир Пашкеев
51 411
Лучший ответ
#include <iostream>
#include <string>
#include <vector>
#include <limits>
#include <cstdlib>
using namespace std;
void input(vector<string>& text, size_t index = 0) {
string line;
getline(cin, line);
text.at(index) = line;
++index;
if (index == text.size()) return;
input(text, index);
}
int main() {
system("chcp 1251 > nul");
cout << "Сколько строк, барин, изволите сегодня ввести: ";
size_t length;
cin >> length;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
system("cls");
vector<string> text(length);
puts("Пожалуйста, приступайте...");
input(text);
system("cls");
puts("Ваш выразительный и чудный текст, барин:");
for (const auto& line : text) cout << line << '\n';
system("pause > nul");
}
IB
Ilias Batrgali
58 704
/* рекурсивный ввод строк на языке Си */
#include <stdio.h>

const int s = 100, l = 100;

int recstr(char str[s][l])
{
static int r = 0;
int c;
int i = 0;
while( (c = getchar()) != '\n' && c != EOF && i < l - 1 )
{
str[r][i++] = c;
}
str[r][i] = '\0';
if(c != EOF) r++;
return r < s ? (c == EOF) ? r : recstr(str) : r;
}

int main()
{
char str[s][l];
/* ввод данных */
int len = recstr(str);
printf("\n\n");
/* вывод на экран */
for(int x = 0; x < len; x++)
printf("%s\n",str[x]);
return 0;
}

/*
Чтобы завершить ввод нужно нажать на Ввод (Enter) после последней строки
и
если у вас Виндовс, нажать одновременно Control + Z
если у вас Линукс, нажать одновременно Control + D
*/
Игорь Кудашкин
Игорь Кудашкин
73 867