C/C++
Ввод массива строк с помощью рекурсии
Помогите, пожалуйста, написать рекурсивную функцию, которая вводит строки
Извините, но при таком условии вам никто не поможет. Если вы обучаетесь, и было дано задание то помогателям нужно знать эту поднаготную, чтобы не гадать на кофейной гуще. А именно: какую тему вы изучаете, что говорил преподаватель (он правит балом), какие инструменты можно использовать. И главное Си или С++?
#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");
}
#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");
}
/* рекурсивный ввод строк на языке Си */
#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
*/
#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
*/
Похожие вопросы
- Создать одномерный массив, состоящий из n вещественных элементов. Элементы массива определить при помощи случайных чисел
- C++. Как сделать ввод переменной (размера) на основе которой будет ввод массива?
- Задача в С++ на знание массивов, строк, файлов и тд
- Язык С почему при обращении к отдельным символам массива/строкам, а именно str[0-1] то есть индекс -1 выводит значение 0
- Двумерный динамический массив с неизвестны количеством столбиков или строк
- Помогите добавить ввод чисел в массив матрицы на языке Си
- Нужна помощь в составлении одномерных массивов С++
- С++. Упорядочить строки массива A в порядке убывания сумм цифр первого элемента каждой строки.
- Помощь с Массивами C++
- Заполнить двумерный массив 5*3 и найти строку с максимальным произведением элементов. C++