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

148 просмотров
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 ачо в Смысле эток ласс?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта