Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Поиск кол-ва символов наибольшего числа в строке

Denis Denis Ученик (80), закрыт 10 лет назад
Перепроверил, все правильно, а результат то верный, то неверный.

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <cstdio>

using namespace std;

int main()
{
char str [200];
printf ("string? ");
fgets (str, 201, stdin);
int s, max;
s=0; max=0;
for (int i=0; ((i<200) && str!=0); i++)
if (str!=' ') {s++;}
else if (max
Дополнен 10 лет назад
Лучший ответ
ra Высший разум (113244) 10 лет назад
fgets (str, 201, stdin);
В конце полученной строки есть символ '\n', это надо анализировать.
Похоже, тут просто ищется максимальная длина слова. Причем тогда тут числа (Поиск кол-ва символов наибольшего числа в строке) ?

> Поиск кол-ва символов наибольшего числа в строке
Чего-чего? Напиши ка лучше полностью текст задания.

Короче, подправил твою программу, как мог:

#include <stdio.h>

int main() {
    char str [201];
    int s = 0, mx = 0;
    printf ("string? ");
    fgets (str, 201, stdin);
    for (int c = 0; str[c] != '\0' ; ++c) {
        if (str[c] != ' ' && str[c] != '\n') {
            s++;
        } else {
            if (mx < s) mx = s;
            s = 0;
        }
    }
    printf ("result: %d\n", mx);
}

Вывод самого длинного слова:

#include <stdio.h>

int main() {
    char str [202];
    int s = 0, mx = 0, in = 0, bc = 0, mc = 0;
    printf ("string? ");
    fgets (str, 202, stdin);
    for (int c = 0; str[c] != '\0' ; ++c) {
        if (!in && str[c] != ' ' && str[c] != '\n') {
            in = s = 1;
            bc = c;
        } else if (in && (str[c] == ' ' || str[c] == '\n')) {
            if (s > mx) {
                mx = s;
                mc = bc;
            }
            s = 0;
            in = 0;
        } else {
            ++s;
        }
    }
    printf("result: %d, ", mx);
    for (int c = mc; c <= mc + mx; ++c) printf("%c", str[c]);
    putchar('\n');
}
Остальные ответы
Похожие вопросы