Написати програму на С++ використовуючи рядки у стилі С із приміренням як вбудованих функцій і так і без вбудованих функцій
1. обробку заданого рядка оформити у вигляді функції (обмін даними
має бути організовано лише через параметри)
2. дані (вихідний рядок) увести з файлу, результати вивести у файл
3. реалізувати перевірку коректності запису й зчитування файлу
(формат уведення-виведення вибрати самостійно).
4. оформити обчислення у вигляді консольного додатку
5. кожна функція повинна мати специфікацію у
вигляді коментарів
Саме завдання :
Задано рядок символів, що складається з довільного тексту, слова
розділено пробілами. Вивести на екран порядковий номер слова, що
накриває k-ту позицію (якщо на k-ту позицію припадає пробіл, то вивести
номер попереднього слова).
Ответы
Ответ:
Нижче наведено програму на мові C++, яка виконує задану операцію. Вона включає функцію findWordNumber, яка обробляє заданий рядок і повертає порядковий номер слова, яке накриває задану позицію.
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
// Функція для обробки рядка та пошуку номера слова, яке накриває задану позицію
int findWordNumber(char str[], int pos) {
int wordCount = 0;
int len = strlen(str);
bool wordFound = false;
for (int i = 0; i < len; i++) {
if (!wordFound && str[i] != ' ') {
wordFound = true;
wordCount++;
}
else if (wordFound && str[i] == ' ') {
wordFound = false;
}
if (i == pos) {
return wordCount;
}
}
// Якщо позиція перевищує довжину рядка, то повертаємо номер останнього слова
if (pos >= len) {
return wordCount;
}
return -1; // Якщо позиція не знайдена
}
int main() {
// Відкриття файлу з вхідними даними та перевірка коректності його відкриття
ifstream inputFile("input.txt");
if (!inputFile) {
cout << "Помилка відкриття файлу!" << endl;
return 1;
}
// Зчитування рядка з файлу та закриття файлу
char str[1000];
inputFile.getline(str, 1000);
inputFile.close();
// Виведення рядка на екран
cout << "Вхідний рядок: " << str << endl;
// Зчитування позиції та виклик функції для пошуку номера слова
int pos;
cout << "Введіть позицію: ";
cin >> pos;
int wordNum = findWordNumber(str, pos);
// Виведення результату на екран та запис у вихідний файл
ofstream outputFile("output.txt");
if (!outputFile) {
cout << "Помилка відкриття файлу!" << endl;
return 1;
}
cout << "Номер слова: " << wordNum << endl;
outputFile << wordNum << endl;
outputFile.close();
return 0;
}
Програма відкриває файл з вхідними даними (input.txt) та зчитує рядок з цього файлу. Потім вона виводить