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 ответов

142 просмотра
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
напиши свой

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

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

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Oh sorry did you want it in Gunter's chains?
Martin Rys
15
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Карта сайта