Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2013, 17:00   #1
camel5
Пользователь
 
Аватар для camel5
 
Регистрация: 10.11.2013
Сообщений: 28
По умолчанию Строки

Помогите новичку.Заранее спасибо!
Есть программа, которая подсчитывает количество слов начинающихся с буквы заданной пользователем.Помогите перевести с С++ в Си.Как сделать, чтобы в программе было заложено считать количество букв начинающихся с "а"?
Код:
#include <iostream>
#include <string>
int main()
{
    std::cout << "Please, enter string: ";
    std::string str;
    std::getline(std::cin, str);
    std::cout << "Please, enter begin char: ";
    char symbol;
    std::cin >> symbol;
    int length = str.length();
    int word_count = 0;
    bool begin_word = true;
    
    for(int i = 0; i < length; i++)
    {
        if(str[i] == ' ')
            begin_word = true;
        else
        {
            if(begin_word)
            {
                if(str[i] == symbol)
                    word_count++;
                begin_word = false;
            }
        }
    }
    
    std::cout << "Word count = " << word_count << std::endl;
    
    return 0;
}

Последний раз редактировалось camel5; 07.12.2013 в 03:03.
camel5 вне форума Ответить с цитированием
Старый 09.12.2013, 15:53   #2
camel5
Пользователь
 
Аватар для camel5
 
Регистрация: 10.11.2013
Сообщений: 28
По умолчанию

Вот что удалось мне:
Код:
#include <stdio.h>
int main()
{
int i,nc,l;
char str;

for(i=0;(c=getchar())!='\n';i++);
nc++;
str[i]=c;
str[i]='\0';
while(str[i]!='\0')
{
for(;str[i]!='\0' && str[i]==' ';i++) 
  for(int i = 0; i < nc; i++)
    {
        if(str[i] == ' ')
            begin_word = true;
        else
        {
            if(begin_word)
            {
                if(str[i] == symbol)
                    l++;
                begin_word = false;
            }
        }
    }

printf("%4d", l);
return 0;
camel5 вне форума Ответить с цитированием
Старый 09.12.2013, 16:45   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
считать количество букв начинающихся с "а"?
Может слов?
Код:
int cnt=0;
for(int i=1;str[i];i++) cnt+=(str[i]=='a' && str[i-1]==' ')?1:0;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2013, 17:11   #4
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Код:
#include <stdio.h>
#include <ctype.h>


/* суть такова: мы не проверяем постоянно на разделители
   проверку делаем на искомое значение, а вот если совпадает
   то проверяем предыдущий символ если он не буквенный то прибавляется единица */
int count_w(const char* s, char c) {
   const char* t = s;
   int n = 0;
   while(*s) {
      if(*s == c)
          n += (int)((s == t) || ! isalpha(*(s - 1)));
      ++s;
   }
   return n;
}



int main(void) {
   char s[] = "ada, apl, lisp, actor, algol";
   char c   = 'a';
   printf("count words: %d\n", count_w(s, c));
   return 0;
}
http://codepad.org/bhj9313u
Nuklon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10