Помогите пожалуйста написать программку. Буду очень благодарна
Вот что-то вроде алгоритма:
программка идет по заданному тексту (одномерному массиву), если встречается буква, то идем далее, если цифра или другой символ, счётчик +1 данного участка, запоминаем счётчики на отд. участках, заем они сравниваются, программка выдает максимальный.
Разберешься?
#include <ctype.h>(проверялось в GCC)
#include <stdio.h>
int main()
{
char s[] = "Я хотела &!123 бы быть 8936!, крев едкой!\0";
int count, max = 0;
for(char *p = s, count = 0; *p; p++)
(isalpha(*p) || *p == 32) ? ((count > max) ? max = count, count = 0:max = max): ++count;
printf("%d", max);
return 0;
}
Можно поподробнее, мы только начали на Visual C++.net 2003 программировать, нам нельзя использовать классы, и обычно программку мы начинаем следующим образом:
#include <iostream>
#include <conio.h>
using spacename std;
int main()
{
...
getch();
return 0;
}
#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;
}
Я уточнила, как программка должна работать, пользователь должен сам ввести строку символов, включающую буквы, цифры, символы и пробелы. Но пробелы не считаются. Можно ли это сделать в программке и как?
Вместо команды:
printf("%d", max);
cout<<,
cin>>
using spacename std;и
#include <iostream>
Спасибо, солнышко!
Можно ли заменить эту программку следующим образом?
#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((str[i]>64)&&(str[i]<91)&&(str[i]<=255)&&(str[i]>191)||(str[i]==32)){
// ... то если полученное на данный момент число символов в серии больше максимального
if(count > max) {
max = count; // тогда запоминаем его как максимальное
count = 0; // а собственно счетчик - обнуляем
}
}
else count += 1; // если же это не буква и не пробел, то увеличиваем счетчик символов
cout << "max = " << max << endl;// печатаем результат
getch();
return 0;
}
Ну, и чем это отличается от того, что я написал в комментариях? Тем что в очередной раз изобретается велосипед вместо использования функции isalpha? Но тогда, прости, по какому праву ты используешь cout? Не пойдет, переписывай потоковый вывод с нуля тоже... Что за двойной стандарт? Либо ты пользуешься готовым везде, либо - нигде...
cout?мы же подключили библиотеку
<iostream>...
cout?мы же подключили библиотеку
<iostream>...