Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Слова в предложении разделены пробелом... 
:(
    Опции темы
vip57
Дата 4.6.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 4.6.2009

Репутация: нет
Всего: нет



помогите плиз с задачкой,очень нужно:
Слова в предложении разделены пробелом. Предложение заканчивается "." "!" и "?". Определить слово с максимальным числом букв "а" и кол-во таких букв "а"
PM MAIL   Вверх
NightmareZ
Дата 4.6.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 0
Всего: 13



Я могу без проблем написать тебе решение. И на C++ и на много ещё чём. Но, блин, ты ж его сдашь, получишь зачёт.... а потом такой неуч пойдёт что-то программировать, да? А я буду пожинать плоды своей "помощи" в виде написанного тобою глючного софта. Вот нафик оно мне нужно?

Но, я добрый сегодня. Потому алгоритм подкину. Пусть будет он.... ну, например, на C#. Сможешь перевести на C++ - молодец, не сможешь - вали в армию.

Код

using System;
using System.Collections.Generic;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main()
        {
            // Вводим строку.
            string inputString = Console.ReadLine() ?? "";

            // Разбиваем строку в массив слов.
            var arr = inputString.Split(new [] {' ', '!', '?', ','});

            // Убираем пустые слова.
            var lst = new List<string>();

            foreach (var s in arr)
                if (s.Trim().Length > 0)
                    lst.Add(s.Trim());

            string word = null; // Слово с наибольшим содержанием букв 'a'.
            int count = 0; // Количество букв 'a' в слове.

            // Ищем слово с наибольшим содержанием букв 'a'.
            foreach (var s in lst)
            {
                int curr = 0;

                for (int i = 0; i < s.Length; i++)
                    if (s[i] == 'a')
                        curr++;

                if (curr > count)
                {
                    word = s;
                    count = curr;
                }
            }

            // Выводим результат.
            if (word == null)
                Console.WriteLine("Слов, содержащих символ 'a' не найдено.");
            else
                Console.WriteLine("Самое длинное слово '{0}' содержит {1} символов 'a'.", word, count);

            Console.ReadKey();
        }
    }
}



--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
mes
Дата 4.6.2009, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(NightmareZ @  4.6.2009,  17:22 Найти цитируемый пост)
Но, я добрый сегодня. Потому алгоритм подкину. 

ну а я подкину идею воспользоваться поиском. Такая проблема не раз поднималась и имеется куча готовых решений smile



--------------------
PM MAIL WWW   Вверх
SalleX
  Дата 7.6.2009, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 16.11.2008

Репутация: нет
Всего: нет



Цитата(NightmareZ @ 4.6.2009,  17:22)
Я могу без проблем написать тебе решение. И на C++ и на много ещё чём. Но, блин, ты ж его сдашь, получишь зачёт.... а потом такой неуч пойдёт что-то программировать, да? А я буду пожинать плоды своей "помощи" в виде написанного тобою глючного софта. Вот нафик оно мне нужно?

Но, я добрый сегодня. Потому алгоритм подкину. Пусть будет он.... ну, например, на C#. Сможешь перевести на C++ - молодец, не сможешь - вали в армию.

Код

using System;
using System.Collections.Generic;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main()
        {
            // Вводим строку.
            string inputString = Console.ReadLine() ?? "";

            // Разбиваем строку в массив слов.
            var arr = inputString.Split(new [] {' ', '!', '?', ','});

            // Убираем пустые слова.
            var lst = new List<string>();

            foreach (var s in arr)
                if (s.Trim().Length > 0)
                    lst.Add(s.Trim());

            string word = null; // Слово с наибольшим содержанием букв 'a'.
            int count = 0; // Количество букв 'a' в слове.

            // Ищем слово с наибольшим содержанием букв 'a'.
            foreach (var s in lst)
            {
                int curr = 0;

                for (int i = 0; i < s.Length; i++)
                    if (s[i] == 'a')
                        curr++;

                if (curr > count)
                {
                    word = s;
                    count = curr;
                }
            }

            // Выводим результат.
            if (word == null)
                Console.WriteLine("Слов, содержащих символ 'a' не найдено.");
            else
                Console.WriteLine("Самое длинное слово '{0}' содержит {1} символов 'a'.", word, count);

            Console.ReadKey();
        }
    }
}

Прикольно!!!Паренёк со строками работать не умеет,и в помощь примерчик в c#...! smile 
Думаю он не планирует быть программистом.  smile 


                                                                     P.S
Смени тип переменных,вывод и ввод используй как в с++;если класс строка тебе не знакома то попробуй использовать простой массив.

Это сообщение отредактировал(а) SalleX - 7.6.2009, 00:45
PM MAIL   Вверх
Dmi3ev
Дата 7.6.2009, 01:10 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Код

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

struct maxstr
{
    char s[256];
    int n;
};

int how_many_a (char *s)
{
    int k=0;
    while (*s)
    {
        if (*s=='a')
            k++;
        s++;
    }
    return k;
}

int main()
{
    char mys[256];
    char *p;
    maxstr ms;
    int k=0;
    int k_in_str=0;

    cout<<"Enter string: "<<endl;
    gets(mys);
    
    p=strtok(mys, " ,!.?");
    k_in_str=ms.n=how_many_a(p);
    strcpy(ms.s, p);

    while (p=strtok(NULL, " ,!.?"))
    {
        k=how_many_a(p);
        k_in_str+=k;
        if (ms.n<k)
        {
            strcpy(ms.s, p);
            ms.n=k;
        }
        k=0;
    }
    if (k_in_str)
    {
        cout<<k_in_str<<"\"a\" in this string"<<endl;
        cout<<"word "<<ms.s<<endl;
    }
    else
        cout<<"\"a\" not found!"<<endl;
    system("pause");
    return 0;
}

что-то похожее на правду, только придется самому оттачивать всякие штуки типа, а если ничего не вводить, а если... 
ЗЫ
Памятка для дебила, "а" набирать на английском  smile 


--------------------

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.