170 похожих чатов

Даров всем, крч помогаю другу отработать программирование на С++, задание:


С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки текста не должна превышать 70 символов). Имя файла должно иметь расширение DAT. Написать программу, которая:
выводит текст на экран дисплея;
определяет количество предложений текста и количество слов
в предложении;
по нажатию произвольной клавиши поочередно выделяет каждое предложение текста, а в выделенном предложении — поочередно все слова.

но когда я читаю этот самый файл, у меня почему то у некоторых слов съедается 1 буква, почему? хз, вот код


#include <iostream>
#include <fstream>
#include <string>
#include <unistd.h>
#include <random>
#include <time.h>


std::string *push(std::string* a, int &size, std::string pushed){
std::string *tmp = new std::string[++size];
for(int i = 0; i < size - 1; i++)
tmp[i] = a[i];
tmp[size - 1] = pushed;
return tmp;
}



int main(int args, char**argv){
srand(time(0));

int cntOffer = 0;
std::string *offer = new std::string[cntOffer];

std::ifstream in("datafile.dat");

int sizeColor = 6;
int color[6] = {91, 92, 93, 94, 95, 96};

// необходимые данные, например: кол-во слов в тексте (cntWord), cntOffer (Кол-во предложений в тексте)
int cntWord = 0;


if(in.is_open())
{
std::string line;
while(std::getline(in, line, '.'))
{
offer = push(offer, cntOffer, line);
}

// задание 1: вывод всего текста
for(int i = 0; i < cntOffer - 1; i++){
std::cout << offer[i] << std::endl;
}
// задание 2: найти кол-во преложений в тексте и найти кол-во слов в предложений
for(int i = 0; i < cntOffer - 1; i++){
for(int j = 0; offer[i][j] != '\0'; j++){
if(offer[i][j] == L' ')
cntWord++;
}
std::cout << "Предложение " << i << "\t|\tкол-во слов: " << cntWord << std::endl;
cntWord = 0;
}


std::cout << std::endl << std::endl;

// задание 3:
char c;
int random_index_color = rand() % sizeColor;
// вывод c помощью нажатий на клавиатуру
for(int i = 0; i < cntOffer - 1; i++)
{
fflush(stdout);
read(STDIN_FILENO, &c, 1);
std::string line_color_print;
for(int j = 0; offer[i][j] != '\0'; j++){
line_color_print += (std::string)"\033[" + std::to_string(color[random_index_color]) + (std::string)"m" + offer[i][j] + (std::string)"\033[0m";
if(offer[i][j] == ' '){
random_index_color = rand() % sizeColor;
j++;
}
}
std::cout << line_color_print << std::endl;
}
in.close();
}


return 0;
}

20 ответов

71 просмотр
Amir-GameDev Автор вопроса

Всё работает, цвет каждого слова рандомный ( из 6 вбитых мной в массив ), по нажатию клавиши получается отобразить, но ПОЧТИ у каждого слова отсутсвует первая буква... ( текст в файле на английском )

Т.е. теперь не только ты помогаешь, а и все мы должны...

Amir-GameDev Автор вопроса
Ilya Zviagin
Т.е. теперь не только ты помогаешь, а и все мы дол...

1 маленькая проблема решение которой в инете не нашёл :) заранее извиняюсь если отвлекаю

Amir-GameDev Автор вопроса

кажись понял :)

Стикер

Amir-GameDev Автор вопроса

0_о ничего себе, почему?

Стикер

Amir-GameDev Автор вопроса

Я её возвращаю ведь

Amir GameDev
Я её возвращаю ведь

Хорошо, а освобождает то кто?

Amir GameDev
Я её возвращаю ведь

А старая пропадает безследно...

Amir-GameDev Автор вопроса
Ilya Zviagin
А старая пропадает безследно...

точно, а вот на счёт tmp, не знаю

Может тебе не мучиться с этим вот дерьмом и использовать std::vector ?

не в пуш на строке где вызывается пуш

Amir-GameDev Автор вопроса
Amir GameDev
нельзя

Препод не разрешает

Amir GameDev
точно, а вот на счёт tmp, не знаю

tmp не пропадает, если результат функции куда-то пишется... (потом он всё равно пропадёт на следующем цикле)

Amir-GameDev Автор вопроса
Michael
напиши свой

ахаха, это тема где мы классы не прошли, тоже нельзя))

Amir GameDev
Препод не разрешает

а почему std::string разрешает?

Алексей (lewa_j) Иванчуков
а почему std::string разрешает?

тем временем препод: о_O ачо в Смысле эток ласс?

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта