Помогите решить задачу на Си++ (Масивы и ряды)

Тема в разделе "C/C++/C#", создана пользователем dimon131, 15 дек 2010.

  1. dimon131

    dimon131 Member

    Репутация:
    0
    Регистрация:
    8 дек 2010
    Сообщения:
    13
    Симпатии:
    0
    Дан массив слов, и в каждом слове от 2 до 10 малых украинских букв. В каждом
    слове удалить все повторные вхождения последней буквы, оставив лишь первое ее
    вхождения.


    Алгоритм:


    Код:
    #include<conio.h>
    #include<stdio.h>
    #include<string.h>
    #define N 2	 //Использование макроса
    int main(void)
    {
    int i,j; // Переменные, которые будут использоваться
    char *P; //Объявление указателя
    char mas[N][11]		//объявление масива
    printf("Введите ряд\n");
    
    for(i=0; i<N; i++)
    gets(mas[i]); //Ввод ряда
    
    for(i=0; i<N; i++)
    {
    P=strchr(mas[i],"a");  //Поиск символа
    if (P!=NULL)
    P+=1
    if (strchr(mas[i],"")==0)	  //вывод масива, если символа нет
    puts(mas[i]);
    }
    getch();
    return 0;
    }
     
  2. DarkKnight

    DarkKnight Well-Known Member

    Репутация:
    0
    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    :))))
    А они в какой кодовой станице хотя бы находятся???? ;-))))
     
  3. dimon131

    dimon131 Member

    Репутация:
    0
    Регистрация:
    8 дек 2010
    Сообщения:
    13
    Симпатии:
    0
    вместо украинских можно использовать английские и любые другие
     
  4. Rififi

    Rififi Гость

    Репутация:
    0
    наверное, как-то так...

    Код:
    #include <locale>
    #include <string>
    #include <iostream>
    #include <sstream>
    #include <algorithm>
    
    /*
    Дан массив слов, и в каждом слове от 2 до 10 малых украинских букв. В каждом
    слове удалить все повторные вхождения последней буквы, оставив лишь первое ее
    вхождения.
    */
    
    int main()
    {
    setlocale(LC_ALL, "");
    
    const std::string source = "foo bar baztabaz";
    std::stringstream ss(source);
    
    std::string s;
    while (ss >> s)
    {
    if (s.size() <= 2)
    continue;
    
    const char ch = *--s.end();
    const size_t pos = s.find(ch);
    
    const std::string::iterator end = --s.end();
    s.erase(std::remove(s.begin() + pos, end, ch), end);
    std::cout << s << std::endl;
    }	
    
    return 0;
    }
    Вывод:

    fo
    bar
    batabaz
     
Загрузка...
Похожие Темы - Помогите решить задачу
  1. Makc
    Ответов:
    4
    Просмотров:
    264
  2. GREED
    Ответов:
    5
    Просмотров:
    943
  3. vovanabali
    Ответов:
    1
    Просмотров:
    792
  4. merrs
    Ответов:
    1
    Просмотров:
    1.405
  5. Kugotovr23
    Ответов:
    1
    Просмотров:
    1.382

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