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

Тема в разделе "Общие вопросы по С и С++", создана пользователем -, 8 янв 2008.

  1. Гость

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


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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
  3. Гость

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


    Код (Text):
    # 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
    }
     
  4. Palladin

    Palladin Гость

    ДА собственно все:)

    Код (Text):
    #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. Гость

    Спасибо,но я уже решила так:
    Код (Text):
    # 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;
    }
     
  6. Izverg

    Izverg Гость

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

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

    Palladin Гость

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

    Pasha Гость

    Для: Palladin
    Посимвольный вывод - тоже не "разбиение строки на 2 части"
    Код (Text):
    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;
    }
     
  9. gamecreator

    gamecreator Гость

    строка - это символьный массив.
     
  10. Izverg

    Izverg Гость

    gamecreator
    символьный массив - строка, но строка - не всегда символьный массив. :)
     
  11. Palladin

    Palladin Гость

    <!--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]
    С этим согласен
     
Загрузка...

Поделиться этой страницей