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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Строки, количество вхождений 
:(
    Опции темы
6ooxa
Дата 7.12.2006, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Написать программу, которая читает с клавиатуры строку символов. Необходимо посчитать
1)количество раз вхождения слова
2)количетво положительных чисел
и вывести их на экран.
заранее спасибо.
PM MAIL   Вверх
Alexeis
Дата 7.12.2006, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Код

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

//
int main(int argc, char* argv[])
{
    char str1[200], //строка для ввода текста
        *aword;     //здесь будет слово
    char substr[] = "word"; //слово которое будем искать
    int n1 = 0, n2 = 0, nuber;

    scanf("%[^\n]", str1);//читаем строку без пробелов
    
    aword = strtok(str1, " "); //находим первое слово в строке

    while (aword != 0) //если нашли хоть одно слово то продолжаем
    {
      if (strcmp(aword, substr)==0) //если оно совпадает искомым то увеличиваем счетчик
        n1++;

      if ((sscanf(aword, "%d", &nuber) > 0)&&(nuber > 0)) //если оно положительное (и вообще число)
        n2++;

      aword = strtok(NULL, " "); //ищем следующее слово в строке
    }

    printf("Naideno slov \"word\" %d\nNaideno polojitelinih 4isel %d \n", n1, n2); //выводим на экран результат

    return 0;
}


Это сообщение отредактировал(а) alexeis1 - 7.12.2006, 12:00


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Oleg_Ci
Дата 7.12.2006, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

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



Даже с русским текстом smile 
Код

#include <iostream>
//#include <cwchar>
//#include <clocale>
//#include <cctype>
using namespace std;

int chfind( char * ch, char * sub ); // подсчёт количества вхождений подстроки sub
int numfind( char *& ch ); // поиск чисел

/////////////// main ///////////////////
int main(int argc, char *argv[])
{ 
    const int len = 100;
    char str[len]; // строка в 100 символов
    char sub[len];
    setlocale( LC_ALL, ".866" );
    wprintf( L"Введите строку:\n" );
    fgets( str, len, stdin ); //  считываем строку не более 100 символов
    wprintf( L"Введите подстроку для поиска:\n" );
    scanf( "%s", sub ); //  считываем строку
    int mcount, num;
    
    wprintf( L"Количество вхождений слова = %d\n", chfind( str, sub ));
    mcount=0;

    char * ch = str;
    for( mcount = 0; num = numfind( ch ); mcount++ )
        printf("%d\n" , num );
    wprintf( L"Количество положительных чисел = %d\n", mcount );
    fflush(stdin);
    getchar(); // пауза
    return 0;
}
///////////////// End main //////////////////////

int chfind( char * ch, char * sub ){
    int res = 0;
    char *a;
    for(; *ch; ch++ ){
        for( a = sub; *ch && *a && *ch == *a; a++, ch++ );
        if( *a == '\0' ) res++;
    }
    return res;
}

int numfind( char *& ch ){
    int res = 0;
    int index = 1;
    char * begin, *end; // начало и конец числа в строке
    // поиск начала положительного числа
    for( begin = ch; *begin && !( *begin >= '0' && *begin <= '9' ); )
        if( *begin++ == '-' ) // если встретили орицательный знак
            for(; *begin && *begin >= '0' && *begin <= '9'; begin++ ); // "перематываем" число...

    for( end = begin; *end >= '0' && *end <= '9'; end++ ); // поиск окончания числа
    for( char * a = end -1; a>=begin; a-- ){ // перевод строки-числа с просто-число ...
        res += index * ( *a - '0' );
        index *= 10;
    }
    ch = end;
    return res;
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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