• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Задача: Обработка символьных данных[последовательность символов]

  • Автор темы Miller85
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Miller85

Все задания решил в контрольной, но в этой тупанул конкретно... Не могу и всё... Задание такое... Выяснить, совпадает ли группа символов с начальным отрезком ряда 0123456789...
 
D

DarkKnight

Слово "начальный отрезок" - тут обозначает, что введенная пользователем последовательность должная быть началом последовательности. Ну я так думаю :) Других идей нет.
C++:
/*
... Выяснить, совпадает ли группа символов с начальным отрезком ряда 0123456789... 
*/
/*
codeby.net
Autor: DarkKnight125
*/
#include <iostream>
using namespace std;

void main(void)
{
char Str[4096]; //Вводима строка
char Iskom[4096]={0}; //Искомая последовательность
char Buffer[128]; //Буферная строка для перевода из int To char*
setlocale(LC_ALL,"Russian");
cout<<"Введите свою строку(последовательность чисел) : "<<endl;
gets(Str);
for (int i=0; strlen(Iskom)<strlen(Str);i++) //Обойдем все числа от 0..до того момента пока длина искомой послед. строки не достигнит длины строки введенной
{
itoa(i,Buffer,10); //Переведем int в char*
strcat(Iskom,Buffer); //Объединим строки
}
char *Result = strstr(Iskom,Str); //Введем указатель на субстроку (можно и без него) Result = Iskom (Если субстрока совпадает с началом)

if (Result == Iskom)
cout<<"Строка '"<<Str<<"' "<<"является началом последовательности '"<<Iskom<<"...'"<<endl;
else
cout<<"Строка '"<<Str<<"' "<<"не является началом последовательности '"<<Iskom<<"...'"<<endl;
}
 

Вложения

  • z39117.jpg
    z39117.jpg
    36,2 КБ · Просмотры: 632
M

Miller85

Всавил как и написал вот этот код

C++:
#include <iostream>
using namespace std;

void main(void)
{
char Str[4096]; //Вводима строка
char Iskom[4096]={0}; //Искомая последовательность
char Buffer[128]; //Буферная строка для перевода из int To char*
setlocale(LC_ALL,"Russian");
cout<<"Введите свою строку(последовательность чисел) : "<<endl;
gets(Str);
for (int i=0; strlen(Iskom)<strlen(Str);i++) //Обойдем все числа от 0..до того момента пока длина искомой послед. строки не достигнит длины строки введенной
{
itoa(i,Buffer,10); //Переведем int в char*
strcat(Iskom,Buffer); //Объединим строки
}
char *Result = strstr(Iskom,Str); //Введем указатель на субстроку (можно и без него) Result = Iskom (Если субстрока совпадает с началом)

if (Result == Iskom)
cout<<"Строка '"<<Str<<"' "<<"является началом последовательности '"<<Iskom<<"...'"<<endl;
else
cout<<"Строка '"<<Str<<"' "<<"не является началом последовательности '"<<Iskom<<"...'"<<endl;
}
Language: cpp
 
D

DarkKnight

Версия Borland C++ 3.1 for DOS просто, в ряду своей старости, долека от стандартов принятых в C++ и STL, из-за этого у тебя и возникают такие ошибки...

Делаешь так:
#include <iostream> заменяешь на #include <iostream.h>
using namespace std; //Комментируешь , пространство имен 3.1 - не понимает
добисываешь на свякий пожарный
#include <conio.h>
#include <stdio.h>
#include <string.h> //Обязательно, т.к. со строковыми ф-ями работает

setlocale(LC_ALL,"Russian"); //Убираешь, т.к. у тебя все будет в кодовой страницы .866 (и код и вывод)
После этого должно все работать, если же нет

P.S. Советую вам использовать другой компилятор и другую среду
 
M

Miller85

Блин... 2 ошибки ещё

1.jpg



Что значит using namespace std;\\Комментируешь?

Какоой компилятор и другую среду посоветуете?
 
D

DarkKnight

Добавь еще
C++:
#include <stdlib.h>

А закомментировать - это значит удалить вообще))) Или:
C++:
//using namespace std;

Добавлено: Ну если по Windows, то какую-нить версию Visual C++ (начиная от 6.0), хотя опять же на любителя... Но стандарты все соблюдены ;-)
 
M

Miller85

Поставил 10-ую visual... когда вводишь данные в doс окне, то ответ не выдает, а вылетает,пишет следущее:


"проект2.exe": Загружено: "C:\Documents and Settings\Администратор\Мои документы\Visual Studio 2010\Projects\проект2\Debug\проект2.exe", Символы загружены.
"проект2.exe": Загружено: "C:\WINDOWS\system32\ntdll.dll", Невозможно найти или открыть файл PDB
"проект2.exe": Загружено: "C:\WINDOWS\system32\kernel32.dll", Невозможно найти или открыть файл PDB
"проект2.exe": Загружено: "C:\WINDOWS\system32\msvcp100d.dll", Символы загружены.
"проект2.exe": Загружено: "C:\WINDOWS\system32\msvcr100d.dll", Символы загружены.
Программа "[404] проект2.exe: Машинный код" завершилась с кодом 0 (0x0).
 
D

DarkKnight

"проект2.exe": Загружено: "C:\Documents and Settings\Администратор\Мои документы\Visual Studio 2010\Projects\проект2\Debug\проект2.exe", Символы загружены.
"проект2.exe": Загружено: "C:\WINDOWS\system32\ntdll.dll", Невозможно найти или открыть файл PDB
"проект2.exe": Загружено: "C:\WINDOWS\system32\kernel32.dll", Невозможно найти или открыть файл PDB
"проект2.exe": Загружено: "C:\WINDOWS\system32\msvcp100d.dll", Символы загружены.
"проект2.exe": Загружено: "C:\WINDOWS\system32\msvcr100d.dll", Символы загружены.
Программа "[404] проект2.exe: Машинный код" завершилась с кодом 0 (0x0).
Уже писал в прошлом сообщении ;-))
Это не вылетает, а завершается нормально ;-)))
Компилируй с Ctrl+F5 и все будет Ok :)
 
M

Miller85

Еще в одной не могу разобраться! Вот код не могу понять где ошибка ответ при х=0.5 Должен быть 2.6719е+00. Но у меня почему-то вводится за место 0,5- 0. Вроде бы и оператор тот или надо double ставить?

C++:
#include<iostream>
#include<iomanip>
#include<math.h>
#include <stdio.h>
using namespace std;
void main()
{ setlocale(LC_ALL,"Russian");
float x,y,z;
for(int i=0;i<3;i++)
{cout<<"Введите x=";
cin>>x;
z=3*sin(2*x);
if(z<0) y=1.5*pow(abs(z*z+sin(z)),1/3);
if(z==0) y=sin(x)/(sqrt(abs(x+1)));
if(z>0) y=2*(log(z)/log(2.0));
cout<<"При х="<<x;
cout.setf(ios::scientific,ios::floatfield);
cout<<"Результат y="<<setprecision(4)<<y<<endl<<endl;
getchar();
cout.setf(0,ios::floatfield);}

cout<<"Конец программы. Нажмите enter"<<endl;

}
 
M

Miller85

Кстати по поводу обработки символьных данных... Там надо было что бы допустим если вводим abc0123. то он является отрезком 0123456789 т.к 0123 отрезок 0123456789... А если a0b1c2 то нет... Вот щас над этим голову ломаю :what?:
 
D

DarkKnight

Miller85, Миллер, а кинь ссылку на топик про который говоришь... Я гляну ;-)

З.Ы. Ничего не знаю, с тебя ящик того что у тебя на логотипе ;-))) Пол мне, пол - lazybiz ;-)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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