вторник, 15 декабря 2009 г.

слово с самым меньшим кол-вом буквы

как мне вывести на экран только одно слово с самым меньшим кол-вом буквы а?

тут есть несколько ньюансов

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

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

#define LITERA 'a'


int main(int argc, char *argv[])
{
 string s;
 cout << "введите строку: ";
 getline(cin, s);

 string min_word;
 int min_count = 0;

 istringstream iss(s);
 while (iss >> s)
 {
  int count = 0;

  for (int i = 0; i < s.length(); i++)
  {
   if (LITERA == s.at(i))
   {
    count++;
   }
  }
  
  if (0 == count)
  {
   //в этом слове нет искомой буквы
  }
  else
  {
   if (0 == min_count)
   {
    //до этого момента не найдено ни одного слова
    min_count = count;
    min_word = s;
   }
   else
   {
    if (count < min_count)
    {
     min_count = count;
     min_word = s;
    }
   }
  }
 }

 if (0 == min_count)
 {
  cout << "в строке нет слов с буквой '" << LITERA << "'" << endl; 
 }
 else
 {
  cout << "слово '" << min_word << "' содержит минимум '"
   << LITERA << "' = " << min_count << endl; 
 }


 return 0;
}

вывод

введите строку: fire char panama ufo
слово 'char' содержит минимум 'a' = 1

введите строку: bug kriss more
в строке нет слов с буквой 'a'

7 комментариев:

  1. ваша программа после первой строки выдает неправильный результат(я ввожу строку с буквой 'a' а она пишет что нету буквы 'a') и завершает программу а мне нужно чтоб после 5 введеных строк она выбирала строку с минимальным кол-вом буква 'a'

    ОтветитьУдалить
  2. нет
    не путаю
    в программе что-то не то
    нужно чтобы было так:
    я ввела 5 cтрочек
    cat
    caat
    caaat
    cit
    caaaaaaaat
    ввела это
    а программа вывела на экран одно слово-cat
    и написала
    в этом слове 1 буква а
    это вообще реально?
    СПАСИБО ЗА ВАШУ ПОМОЩЬ!!!!

    ОтветитьУдалить
  3. ваша программа не ждёт пока 5 строчек введут
    она сразу результат выдаёт после первой же строки
    и то не верный
    пишет,что есть буква -а- хотя её нет..

    ОтветитьУдалить
  4. http://its.lnpu.edu.ua/~chebanov/
    это лабораторные работы для 1 курса программной инженерии
    я просила решить 10 лаб- 16 вариант- 2 задание
    может теория к этой лаб. поможет решить так как нужно именно в этом случае..
    спасибо

    ОтветитьУдалить
  5. ведь это я переделал с условием нахождения слова в _СТРОКЕ_ в котором меньше всего букв 'a'

    введите строку: cat caat caaat cit caaaaaaat
    слово 'cat' содержит минимум 'a' = 1

    я может чего не понимаю, но тут (http://resheno.blogspot.com/2009/12/blog-post_12.html) я поправил программу для нахождения и максимума и минимума вхождения символа в строке

    input 0 string: cat
    input 1 string: caat
    input 2 string: caaat
    input 3 string: cit
    input 4 string: caaaaaaaat
    в строке 4 больше всего (8) букв 'a'
    в строке 0 меньше всего (1) букв 'a'

    что не так в результате?

    ОтветитьУдалить
  6. даже если это не совсем то что вы хотели - мне кажется тут нетрудно передалать для ваших нужд, если вам нужна более подробная консультация - свяжитесь со мной в чате (клацнуть на моей фото когда я в online - зеленый значек вам это подскажет)

    ОтветитьУдалить