Символьные строки и функции

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

Гость
#1
Функция разбивает строку на две части: до первого вхождения заданного символа и после него.


Помогите пожалуйста!
 

Гость
#3
Написала программу, но не знаю, кажется бред.Может кто-нибудь скажет что в ней не так , очень прошу!!!!!


Код:
# include <string.h>
# include <iostream.h>
using namespase std;
int main()
{
string s1[10];
char a;
cout<<"s1="<<s1<<endl;
cout<<"a="<<a<<endl;
cout<<"после insert:"<<endl;
cout<<"a="<<a insert(1;s1)<<endl;
s1. erase;
cout<<"после erase:"<<endl;
cout<<"a="<<a erase(2;s1)<<endl;
return 0
}
 
P

Palladin

Гость
#4
ДА собственно все:)

Код:
#include <string>
#include "stdafx.h"
#include<iostream>
using namespace std;

int main()
{
//Функция разбивает строку на две части: до первого вхождения заданного 
//символа и после него.

string s1; //строковая переменная
char ch;  //переменная под искомый символ
cout<<"Vvedite stroku: "; //сообщение пользователю, дабы он ввел строку
getline(cin,s1); //функция класса string в s1 заносит то что ввел пользователь, 
//используется в случае если пользователь может ввести стркоу с пробелами
cout<<"Vvedite simvol: "; //сообщение пользователю, дабы он ввел символ
cin>>ch;//вводим искомый символ разжеления

int x=s1.find(ch);//ищем номер символа
cout<<"Vsya stroka: "<<s1<<endl; //выводим всю строку для наглядности
cout<<"Do simvola: "; 
for(int i=0;i<x;i++)//цикл вывода до символа
{
cout<<s1[i];
}
cout<<endl;
cout<<"Posle simvola: ";

for(int i=x+1;i<s1.length();i++) //цикл вывода после символа
{
cout<<s1[i];
}
cout<<endl;

//если писал в VC то может понадобится в папке с проектом в файле stdfax.h 
//добавить строку #include <string>
return 0;
}
 

Гость
#5
Спасибо,но я уже решила так:
Код:
# include<stdio.h>
# include<iostream.h>
# include<string.h>
# include<conio.h>
int main()
{
char s1[20];
char a;
int i;
i=0;
cout<<"vvedite s1"<<endl;
cin>>s1;
cout<<"vvedite a"<<endl;
cin>>a;
while (s1[i]!='.')
{
cout<<s1[i];
if (s1[i+1]==a) cout<<" ";
if (s1[i]==a) cout<<" ";
i=i++; }
getch();
return 0;
}
 
I

Izverg

Гость
#6
У Вас в проверке условия цикла '.' стоит, надеюсь вы вкурсе, что если в конце введенной пользователем строки ее не поставить, то программа будет неправильно работать? :)

/MODERATOR-Morpheus/ По уважительнее
 
P

Palladin

Гость
#7
твое решение имеет два недостатка:
1) как сказал Изверг, может возникнуть проблема с точкой
2) Программа решена не по заданию, у тебя работа с массивом символов, а в задании работа со строками
 
P

Pasha

Гость
#8
Для: Palladin
Посимвольный вывод - тоже не "разбиение строки на 2 части"
Код:
string string_to_split;
char separator;

cout << "Vvedite stroku: ";
getline(cin,string_to_split);

cout << "Vvedite simvol: ";
cin >> separator;

int separator_pos = string_to_split.find(separator);

cout << "Do simvola: " << string_to_split.substr(0, separator_pos) << endl;

if (separator_pos < string_to_split.length() - 1)
{
cout << "Posle simvola: " << string_to_split.substr(separator_pos + 1) << endl;
}
 
P

Palladin

Гость
#11
<!--QuoteBegin-Pasha+17:01:2008, 19:14 -->
<span class="vbquote">(Pasha @ 17:01:2008, 19:14 )</span><!--QuoteEBegin-->Посимвольный вывод - тоже не "разбиение строки на 2 части"
[snapback]93999" rel="nofollow" target="_blank[/snapback]​
[/quote]
С этим согласен