Страница 2 из 2
Re: Самое длинное слово, как минимум из трёх символов
Добавлено: 03 янв 2015, 22:08
vbn
упс

и вправду, сам не заметил, да нужно чтоб был не менее трех букв а.
Я так понимаю надо условие написать, чтоб он отслеживал три буквы а, но только куда его вставить нужно?
Re: Самое длинное слово, как минимум из трёх символов
Добавлено: 03 янв 2015, 22:19
Romeo
Ну во-первых, эти буквы a нужно считать, причём считать отдельно в каждом слове.
Следует завести отдельную переменную, скажем count_a. Изначально она должна быть нолём. Во время прохождения по строке нужно увеличивать эту переменную, если текущий символ равен a и сбрасывать её в ноль, когда слово закончилось (в том же месте, где сбрасывается в ноль текущая длина). Ну и последнее, что нужно поправить, это условие запоминания индекса начала максимального слова. В этом условии нужно проверять не то, что текущая длина слова больше либо равно трём, а то, что наша переменная count_a больше либо равно трём.
Подумай над каждым изменением в коде и проблем не возникнет.
Re: Самое длинное слово, как минимум из трёх символов
Добавлено: 03 янв 2015, 23:33
vbn
Вроде я все сделал по вашим рекомендациям правильно, но не работает, ввожу два слово, одно с тремя буквами а а другое очень длинное, но не с буквами а выводиться а самое длинное
Код: Выделить всё
#include<stdio.h>
#include<string.h>
#include<conio.h>
int main()
{
char s[255];
int i, cur_len = 0, max_len = 0, start_max = -1,len,count_a=0;
printf("Vvedite text: ");
gets(s);
len = strlen(s);
for (i = 0; i <= len; i++)
{
if ((s[i]=='a') || (s[i]=='A'))
{
count_a++;
}
if ((s[i]==0) || (s[i]==' '))
{
if (count_a>=3)
{
start_max = i - cur_len;
max_len = cur_len;
}
cur_len = 0;
count_a=0;
}
else
{
cur_len++;
}
}
if (start_max >= 0)
{
i = start_max;
while ((s[i] != ' ') && (s[i] != 0))
{
printf("%c", s[i]);
i++;
}
}
else
{
printf("slovo s tremy simvolami a, ne bilo naydeno");
}
getch();
return 0;
}
Re: Самое длинное слово, как минимум из трёх символов
Добавлено: 03 янв 2015, 23:57
Romeo
А зачем вторую часть условия убрал? Без неё у тебя самое длинное слово не будет искаться. Ну я же попросил тебя подумать над каждым изменением...
Re: Самое длинное слово, содержащее минимум 3 буквы 'a'
Добавлено: 05 янв 2015, 19:45
vbn
Я проверил прошлый код(который без добавления с содержанием буквы а ), он тоже не работает, я ввожу так:
sssg juytretip
и выводиться juytretip
Код: Выделить всё
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main()
{
char s[255];
int i, cur_len = 0, max_len = 0, start_max = -1;
printf("Vvedite text: ");
gets(s);
const int len = strlen(s);
for (i = 0; i <= len; ++i)
{
if ((s[i]==0) || (s[i]==' '))
{
if ((cur_len >= 3) && (cur_len > max_len))
{
start_max = i - cur_len;
max_len = cur_len;
}
cur_len = 0;
}
else
{
cur_len++;
}
}
if (start_max >= 0)
{
i = start_max;
while ((s[i] != ' ') && (s[i] != 0))
{
printf("%c", s[i]);
++i;
}
}
else
{
printf("slovo dlinnoy ot trex simvolov i boliche, ne bilo naydeno");
}
getch();
return 0;
}
Re: Самое длинное слово, содержащее минимум 3 буквы 'a'
Добавлено: 05 янв 2015, 20:31
Romeo
А что ты ожидаешь увидеть? Ведь "juytretip" - это ведь и есть самое длинное слово, содержащее как минимум три буквы.
Re: Самое длинное слово, содержащее минимум 3 буквы 'a'
Добавлено: 05 янв 2015, 20:51
vbn
Хорошо, вернемся к задаче с тремя буквами а, где я мог ошибиться, вроде проверяет и длину слова, и буквы "а" считает, но вывод длинное слово, без букв "а"
Код: Выделить всё
#include<stdio.h>
#include<string.h>
#include<conio.h>
int main()
{
char s[255];
int i, cur_len = 0, max_len = 0, start_max = -1,len,count_a=0;
printf("Vvedite text: ");
gets(s);
len = strlen(s);
for (i = 0; i <= len; i++)
{
if ((s[i]=='a') || (s[i]=='A'))
{
count_a++;
}
if ((s[i]==0) || (s[i]==' '))
{
if ((count_a>=3) && (count_a > max_len))
{
start_max = i - cur_len;
max_len = cur_len;
}
cur_len = 0;
count_a=0;
}
else
{
cur_len++;
}
}
if (start_max >= 0)
{
i = start_max;
while ((s[i] != ' ') && (s[i] != 0))
{
printf("%c", s[i]);
i++;
}
}
else
{
printf("slovo s tremy simvolami a, ne bilo naydeno");
}
getch();
return 0;
}
Re: Самое длинное слово, содержащее минимум 3 буквы 'a'
Добавлено: 06 янв 2015, 12:19
Romeo
Скопировал программу из твоего сообщения, скомпилировал и запустил. Вот результат запуска:
Vvedite text: 11111 aaa 1111a a11111111a 111111111111111111111
aaa
По-моему всё правильно. Ты видишь ошибки?
Re: Самое длинное слово, содержащее минимум 3 буквы 'a'
Добавлено: 06 янв 2015, 19:16
vbn
Хехе,создал новый файл, вставил код, все работает, спасибо, но а в старом, тоже самое, код такой же, но видимо не перекомпилируется