Форум программистов, компьютерный форум CyberForum.ru

можно написать ее как то проще ? - C++

Восстановить пароль Регистрация
 
Paraday
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 73
30.05.2012, 17:38     можно написать ее как то проще ? #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <locale.h>
#include <string>
#include <conio.h>
 
 
int main()
{
    setlocale(LC_CTYPE, "rus");
    char str[256];
    printf("Введите строку: ");
    gets(str);
    int k;
    bool flag;
 
 
    for (int i = 0; i < strlen(str); i++)
    {
        if (strlen(str)%(i+1) == 0)
        {
            k = 0;
            flag = true;
 
            for (int j = i+1; j < strlen(str); j +=i+1)
            {
                if (strncmp(&str[j%(i+1)], &str[j], i+1)) flag = false;
            }
 
            if (flag) k = strlen(str)/(i+1);
        }
 
        if (k)
        {
            printf("k = %d\n", k);
            break;
        }
    }
    getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
30.05.2012, 17:48     можно написать ее как то проще ? #2
Вы хоть напишите, что именно программа должна делать...
Aesonet
23 / 23 / 1
Регистрация: 04.04.2012
Сообщений: 119
30.05.2012, 17:55     можно написать ее как то проще ? #3
C++
1
2
3
if (flag) k = strlen(str)/(i+1);
 
if (k)
Что за операторы выбора? Что они делают. И у вас код на Си написан, а не С++.
Paraday
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 73
30.05.2012, 18:20  [ТС]     можно написать ее как то проще ? #4
Задание
Задача «Поиск последовательностей»
Мальчику Пете дали задание. У него есть файл со странными длинными строками символов, и
ему нужно все это перепечатать в другой файл. Но Петя печатает медленно, а стремится
скорее справиться. Он заметил, что много строк - это просто приписан несколько раз сам
себя какой-то короткий строку. Теперь Петя стремится в каждой строке из файла выделить как можно
более короткий повторяющийся элемент, распечатать его вручную, а затем просто скопировать
нужное число раз. Помогите ему это сделать.
Данная строка s, состоящая из маленьких латинских букв. Вам нужно найти
наибольшее число k и строка t, такое, что s будет совпадать со строкой t, выписанным k раз. на выходе
просто введите найденное число k.
пример Результат
аааа 4
аbсаbсаbс 3
аbсеfе 1
Aesonet
23 / 23 / 1
Регистрация: 04.04.2012
Сообщений: 119
30.05.2012, 19:01     можно написать ее как то проще ? #5
Вот написал прогу для рассчета макс одинаковых символов в строке может оно...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
char str[256];
int mass[100];
int i,j,n,k;
int main ()
{
gets(str);
for (i=0;i<strlen(str); i++)
{
for (j=0;j<strlen(str); j++) 
{
if (str[i]==str[j]) {mass[j]+=1;n++;}    
}
   
}
for (j=0;j<n;j++)
{for (k=0;k<n-1;k++) {if (mass[k]<mass[k+1]) {int temp=mass[k];mass[k]=mass[k+1];mass[k+1]=temp;}}}
cout<<mass[0];
getch ();
}
Yandex
Объявления
30.05.2012, 19:01     можно написать ее как то проще ?
Ответ Создать тему
Опции темы

Текущее время: 13:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru