Помогите пожалуйста написать программку. Буду очень благодарна
Вот что-то вроде алгоритма: программка идет по заданному тексту (одномерному массиву), если встречается буква, то идем далее, если цифра или другой символ, счётчик +1 данного участка, запоминаем счётчики на отд. участках, заем они сравниваются, программка выдает максимальный.
Код
Я хотела &!123 бы быть 8936!, крев едкой! :blum: Ответ:6
volvo
6.09.2007 2:53
Разберешься?
#include <ctype.h> #include <stdio.h>
int main() { char s[] = "Я хотела &!123 бы быть 8936!, крев едкой!\0"; int count, max = 0;
Можно поподробнее, мы только начали на Visual C++.net 2003 программировать, нам нельзя использовать классы, и обычно программку мы начинаем следующим образом:
#include <iostream> #include <conio.h> using spacename std;
int main() { ... getch(); return 0; }
Да и как это будет выглядеть, если пользователь сам будет вводить эту строку символов (текст)??
volvo
6.09.2007 17:28
Цитата
нам нельзя использовать классы
А где ты здесь классы увидела? Это вообще практически чистый С, а не С++. А вот смешивать одно с другим, как этого хочешь ты (в частности, вроде бы и С++, но и классы не использовать, хотя std почему-то можно) я бы не советовал... Как строку представлять, например, будешь? Вообще-то подразумевается std::string, но ведь это - класс, тебе нельзя этим пользоваться...
Если непонятно использование оператора ?: - то вот то же самое, но с if-ами:
#include <ctype.h> #include <stdio.h>
int main() { char s[256]; // Буфер под строку int count, max = 0;
gets(s); // читаем строку с клавиатуры... Если хочешь, можешь заменить на cin.getline(s, 256);
// для каждого символа строки проделываем следующее for(char *p = s, count = 0; *p; p++) // если символ - буква или пробел (32 - это код пробела) ... if(isalpha(*p) || *p == 32) { // ... то если полученное на данный момент число символов в серии больше максимального if(count > max) { max = count; // тогда запоминаем его как максимальное count = 0; // а собственно счетчик - обнуляем } } else count += 1; // если же это не буква и не пробел, то увеличиваем счетчик символов
printf("%d", max); // печатаем результат. При желании можно заменить // на cout << "max = " << max << endl; return 0; }
Olya
8.09.2007 20:18
Я уточнила, как программка должна работать, пользователь должен сам ввести строку символов, включающую буквы, цифры, символы и пробелы. Но пробелы не считаются. Можно ли это сделать в программке и как?
Вместо команды:
printf("%d", max);
можно ли использовать
cout<< cin>>
,
предварительно подключив
using spacename std;
и
#include <iostream>
Можно ли поподробнее объяснить процесс самого поиска этой максимальной серии символов?
volvo
9.09.2007 0:07
Цитата
Можно ли поподробнее объяснить процесс самого поиска
Комментарии добавлены...
Olya
9.09.2007 0:18
Спасибо, солнышко!
Olya
16.09.2007 23:47
Можно ли заменить эту программку следующим образом?
#include <iostream> #include <conio.h>
using namespace std;
int main() { char str[256]; // Буфер под строку int count, max = 0;
cin.getline(str, 256); // читаем строку с клавиатуры
// для каждого символа строки проделываем следующее for(int i=0, count = 0; str[i]!="/0"; i++) // если символ - буква или пробел (32 - это код пробела) ...
// ... то если полученное на данный момент число символов в серии больше максимального if(count > max) { max = count; // тогда запоминаем его как максимальное count = 0; // а собственно счетчик - обнуляем } } else count += 1; // если же это не буква и не пробел, то увеличиваем счетчик символов
cout << "max = " << max << endl;// печатаем результат getch(); return 0; }
volvo
17.09.2007 0:07
Ну, и чем это отличается от того, что я написал в комментариях? Тем что в очередной раз изобретается велосипед вместо использования функции isalpha? Но тогда, прости, по какому праву ты используешь cout? Не пойдет, переписывай потоковый вывод с нуля тоже... Что за двойной стандарт? Либо ты пользуешься готовым везде, либо - нигде...
Olya
17.09.2007 9:41
Цитата(volvo @ 17.09.2007 0:07)
Ну, и чем это отличается от того, что я написал в комментариях? Тем что в очередной раз изобретается велосипед вместо использования функции isalpha? Но тогда, прости, по какому праву ты используешь cout? Не пойдет, переписывай потоковый вывод с нуля тоже... Что за двойной стандарт? Либо ты пользуешься готовым везде, либо - нигде...
Почему мы не можем использовать
cout?
мы же подключили библиотеку
<iostream>
...
hardcase
17.09.2007 22:02
Цитата(Olya @ 17.09.2007 6:41)
Почему мы не можем использовать
cout?
мы же подключили библиотеку
<iostream>
...
Заменить можешь, просто isalpha несколько понятнее вереницы символов в условии, volvo ругается именно из за этого момента, потомучто в остальном программа идентична его варианту.
Olya
18.09.2007 0:47
Цитата(hardcase @ 17.09.2007 22:02)
Заменить можешь, просто isalpha несколько понятнее вереницы символов в условии, volvo ругается именно из за этого момента, потомучто в остальном программа идентична его варианту.
Спасибо!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.