• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Работа со строками

  • Автор темы cyrrus
  • Дата начала
C

cyrrus

В общем, пишу програму, но не очень получается т.к. новичок,
суть програмы:
" Написать програму с объектами, методы которых:
1. Из фаила данных считать текст (текст не одна строчка).
2. Удалить слова, в которых количество символов некратное.
3. Оставшиеся слова выводятся в обратном порядке (порядок слов не меняется, меняется

порядок симвоов в слове (нпрмер: абцд ->дцба))
4. Все резултаты выводятся на екран и фаил результатов."

Вот, я уже коечто написал, но застрял, как допустим реализоват код, чтоб он всеже лишал

текст ненужных слов?
И с обратным порядком совсем не ясно :/
Вот мои код:
Код:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class tekst 
{ 
public: 


void write(void)
{ 
char s[255];

ofstream R("rez.txt");
ifstream D("duom.txt");
cout<<"Pervichnyj tekst: "<<endl;
while (!D.eof()){
D.getline(s,255);
R<<s<<endl;
cout<<s<<endl;		
}
D.close();
R.close();
}
void delet(void)
{ char s[255];
ofstream R("rez.txt",ios::app);
ifstream D("duom.txt");
while (!D.eof()){
D.getline(s,255);}
cout<<"V tekste "<<strlen(s)<<" simvolov"<<endl;
R<<strlen(s)<<endl;

while (!D.eof())
{
if (!(strlen(s)%2))
D.getline(s,255);
R<<s<<endl;
cout<<s<<endl;
}
} 
};
int main()
{ tekst a;
a.write();
a.delet();
return 0;}
 
O

Ogion7

определись. что такое слово и напиши функцию которая будет выделять из строки слово, возвращать его и удалять из исходной строки. А потом функции которая будет выполнять обращение слов. Каждое новое слово проверяеш на кратность и записываеш(или нет) в кой-нить результирующий масив
 
C

cyrrus

Вот как я дописал это:
Код:
while (!D.eof())		//считаем количество слов в тексте
{D.getline(str,255);
for (int v;v<255;v++)
while (str[v]!=32)
n++;		 
}
cout<<"V tekste "<<n<<" slov"<<endl;
char * * str1[255];
str1 = new char * [n];
for (int i = 0; i < n; ++i) {
str1[i] = new char [64]; //64 символа под слово должно хватить
}
for(int j=0;j<n;j++)
{if (!(strlen(str1[i])%2))
R<<str[i];}
но, в линеике 10, там где "str1 = new char * [n];" -> error C2440: '=' : cannot convert from 'char ** ' to 'char **[255] '
и почемуто количество слов показывает : -858993460
в чем сдесь проблема? :)
 
O

Ogion7

на код взгляни -- while (str[v]!=32), если первый символ условию не удовлетворит, то условие никогда не выполнится. А отрицательное число -- ибо циклит, при достижении n граничного значения, бит знака изменяестся и меняется знак. Хотя неясно почему остановилось...
 
C

cyrrus

сдесь я имел в виду:
имеется текст str в нем v символов, проидя каждыи символ цикл считает сколько пробелов в тексте (я исчодил из того что сколько пробелов в тексте столько и слов, 32 это код пробела с ASCII)текст у меня простои, 3 строчки, без запятыч и точек.
В програмировании я не силён, и даже составить работающий алгоритм мне тежело, по этому и прошу советов/наставлений/примеров.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!