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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2014, 21:45   #1
Kirillgr
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 25
По умолчанию Подсчитать количество букв 'а' в последнем слове строчки.

Здравствуйте. Прошу помочь вот с такой прогой:
Дан текст. Группы символов, разделенных пробелами, считать словами. Подсчитать количество букв 'а' в последнем слове текста.
В задаче строку нужно хранить как массив символов и как строку символов.
Kirillgr вне форума Ответить с цитированием
Старый 12.10.2014, 22:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сможешь сам ввод строки описать?
Если да то:
Для char*
Код:
for(int i=strlen(s)-1;i && s[i]!=' ';i--) cnt+=(s[i]=='a')?1:0;
для string:
Код:
for(int i=s.length()-1;i && s[i]!=' ';i--) cnt+=(s[i]=='a')?1:0;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2014, 23:24   #3
Kirillgr
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 25
По умолчанию

Попробую. А что такое ?1:0 ?

эти две задачи должны быть отдельно: в первой c использованием printf/scanf, а во второй - с getchar/putchar

Последний раз редактировалось Stilet; 18.10.2014 в 10:27.
Kirillgr вне форума Ответить с цитированием
Старый 13.10.2014, 10:47   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
#include <iostream>
#include <sstream>
#include <iterator>
#include <algorithm>

using namespace std;

int main() {
	string str = "hello world bla bla blabla";
	stringstream ss(string(str.rbegin(), str.rend()));
	string w = *istream_iterator<string>(ss);
	cout << count(w.begin(), w.end(), 'a') << endl;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 13.10.2014, 11:26   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Попробую. А что такое ?1:0 ?
Это счёт. Наши победили.

На самом деле, это выбор слагаемого в сишном тернарном операторе
Код:
a = (условие) ? b : c;
// эквивалентно этому:
if (условие) a = b;
else a = c;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.10.2014, 20:10   #6
Kirillgr
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 25
По умолчанию

Надо в С, а не С++
Kirillgr вне форума Ответить с цитированием
Старый 13.10.2014, 20:39   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Надо в С, а не С++
То есть, только char*, только хардкор?
Код:
#include <string.h>
unsigned int laba(char* s)
{
  unsigned int cnt = 0;
  char* p = strrev(s);
  while (*p && (*p != 0x20)) cnt += *p++ == 'a' ? 1 : 0;
  return cnt;
}
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 13.10.2014 в 21:02.
min@y™ вне форума Ответить с цитированием
Старый 14.10.2014, 22:56   #8
Kirillgr
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 25
По умолчанию

Попытки не удаются, объясните как. Сначала я описываю символы, потом я должен добавить написанное Вами, min@y?
И как эту строчку написать в нормальном виде: while (*p && (*p != 0x20)) cnt += *p++ == 'a' ? 1 : 0;
Kirillgr вне форума Ответить с цитированием
Старый 14.10.2014, 23:16   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
потом я должен
Да ничего ты мне не должен.
Эта функция, по задумке, должна подсчитывать кол-во букв "а" в последнем слове строке s. Я эту функцию не отлаживал, писал на заборе. Подразумевалось, что ты её к себе скопипастишь и попробуешь. Или на её основе напишешь что-то своё.
Цитата:
как эту строчку написать в нормальном виде
Нормальный вид - это какой?
Вообще, сишник - такой язык, в котором абсолютно рабочий код может быть совершенно нечитаемым. Поэтому я паскаль люблю.
Анализируй выражение частями, не пытайся объять необъятное и впихнуть невпихуяемое.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 15.10.2014, 07:44   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Попытки не удаются, объясните как.
Я так понял что и мой совет оказался бесполезным?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить количество букв в каждом слове (Паскаль) afdotya Паскаль, Turbo Pascal, PascalABC.NET 0 16.10.2013 19:26
Дано предложение, слова отделяются друг от друга пробелами. Подсчитать, сколько букв «а» в каждом слове. alexx7312 Помощь студентам 1 28.05.2013 20:51
Работа со строками. Подсчитать количество четных/нечетных букв в слове. snusmumr Помощь студентам 4 04.06.2011 18:52
Подсчитать количество букв "А" в предложении и общее количество букв.В тексте из файла несколько строк. kvas91 Общие вопросы C/C++ 3 14.11.2010 16:51
подсчет букв С в последнем слове Obey177 Помощь студентам 7 10.09.2010 16:06