суббота, 12 декабря 2009 г.

поиск строки с максимальным содержанием заданной буквы

Запросить у пользователя 5 строк и вывеcти на экран ту, в которой содержится меньше(больше) всего букв «а»

#include <iostream>
#include <string>

using namespace std;

#define N 5
#define LITERA 'a'

int main(int argc, char *argv[])
{
   string s[N];
   for (int i=0; i<N; i++)
   {
      cout << "input " << i << " string: ";
      getline(cin, s[i]);
   }

   int min_index = -1;
   int min_count = -1;

   int max_index = -1;
   int max_count = -1;

   for (int i=0; i < N; i++)
   {
       int count = 0;
       for (int j=0; j < s[i].length(); j++)
       {
           if (LITERA == s[i].at(j))
           {
               count++;
           }
       }

       if (0 != count)
       {
              if (-1 == min_count)
              {
                       min_count = count;
                       min_index = i;               
              }
              else
              {
                       if (count < min_count)
                       {
                                 min_count = count;
                                 min_index = i;
                       }
              }
       }

       if (count > max_count)
       {
           max_count = count;
           max_index = i;
       }
   }

   if (-1 != max_index)
   {
       cout << "в строке " << max_index
          << " больше всего (" << max_count << ") "
          << "букв '" << LITERA << "'" << endl;
   }
   else
   {
       cout << "ни в одной строке нет буквы '" << LITERA << "'" << endl;
   }

   if (-1 != min_index)
   {
       cout << "в строке " << min_index
          << " меньше всего (" << min_count << ") "
          << "букв '" << LITERA << "'" << endl;
   }

   return 0;
}

вывод
input 0 string: fdfads
input 1 string: dfadfafad
input 2 string: dfadfadfadfad
input 3 string: dadf
input 4 string: dafadfadfad
в строке 2 больше всего (4) букв 'a'

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

  1. супер!
    спасибо!!

    ОтветитьУдалить
  2. только вы перепутали
    мне нужнобыло мин кол-во букв в строчке
    а не максимальное
    я просто исправлю max на min
    спасибо ещё раз!!

    ОтветитьУдалить
  3. посмотрите пожалуйста мою программу,которая ищет букву а в строке
    как мне вывести на экран только одно слово с самым меньшим кол-вом буквы а?

    #include "STRING.H"
    #include "iostream.h"
    void main()
    {
    char stroka[20];

    cout<<"vvedite 5 strok";
    for(int i=0;i<5;i++)
    {cin>>stroka;

    if(strchr(&stroka[0],'a'))
    cout<<"est bukva a";
    else
    cout<<"net bukva a" ";
    }

    }

    ОтветитьУдалить
  4. с таким условием задача решается немного по-другому

    http://resheno.blogspot.com/2009/12/blog-post_15.html

    ОтветитьУдалить
  5. извините но ваша программа неправильно работает
    мне нужно чтоб при вводе 5 строк программа выводила на экран только 1 строку с самым маленьким числом буквы 'a'
    а ваша программа этого не делает
    исправьте пожалуйста

    ОтветитьУдалить
  6. у вас пять пятниц на неделе )))

    посмотрите - я переделал оригинал - теперь находит и минимум и максимум

    ОтветитьУдалить
  7. спасибо большое!
    теперь всё понятно и всё работает!!
    ВЫ СУПЕР!!!

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