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

Последовательность чисел. - C++

Войти
Регистрация
Восстановить пароль
 
Verysilent
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 3
15.11.2009, 20:10     Последовательность чисел. #1
Помогие написать программку в С. Заранее огромное спасибо за помощь. Надо через pole как-то прописывать, но я хреново понимаю как.
Итак. Задача следующая.
Необходимо написать программу, которая проведет анализ исходной последовательности целых чисел.
Определит какое число или числа повторились чаще, чем остальные и подсчитает количество этих повторов.
Входом в программу будет количество чисел в последовательности n, при этом 0 < n < 10000.
Выходом из программы будет ответ, какое число (или числа) из данной последовательности повторялись чаще остальных и количество этих повторов.

пример:

укажите количество чисел в последовательности:
5
напишите числа последовательности:
1 1 1 1 1
Число(а) повторилось 5х и это число(а): 1.


укажите количество чисел в последовательности:
5
напишите числа последовательности:
1 2 1 2 3
Число(а) повторилось 2х и это число(а): 1 и 2.


укажите количество чисел в последовательности:
6
напишите числа последовательности:
1 2 3 1 2 3
Число(а) повторилось 2х и это число(а): 1, 2 и 3.


укажите количество чисел в последовательности:
5
напишите числа последовательности:
1 2 3 4 5
Число(а) повторилось 5х и это число(а): 1, 2, 3, 4 и 5.

укажите количество чисел в последовательности:
adf
Неправильный вход в программу.

укажите количество чисел в последовательности:
10000
Неправильный вход в программу.

укажите количество чисел в последовательности:
5
напишите числа последовательности:
1 3 4 6 adf
Неправильный вход в программу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2009, 20:10     Последовательность чисел.
Посмотрите здесь:

C++ c++ последовательность чисел
C++ последовательность чисел
C++ Задана последовательность из n чисел. Найти количество чисел больше своего номера
C++ Последовательность n чисел.
Последовательность чисел C++
Последовательность чисел C++
C++ последовательность чисел
Последовательность чисел C++
Последовательность чисел C++
C++ Последовательность чисел
C++ Последовательность чисел на си
Проверить является ли заданная последовательность целых чисел перестановкой чисел натурального ряда C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.11.2009, 21:23     Последовательность чисел. #2
а чего у тя уже наработанного есть? ещё и защиту от дурака ставить и вывод красиво офрмлять
Verysilent
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 3
15.11.2009, 21:30  [ТС]     Последовательность чисел. #3
защиту ставить не умею к сожалению

вот что есть, но где-то здесь ошибочка, не знаю где пока

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <stdio.h>
#include <stdlib.h>
 
 
 
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
 
int main(int argc, char *argv[])
{
int n, i, vstup;
printf("укажите количество чисел в последовательности:\n");
vstup = scanf("%d",&n);
if(vstup != 1 ||n < 1 || n>= 10000) {
printf("Неправильный вход в программу.\n");
return 0;
}
int *pole;
pole = (int *)malloc(n * sizeof(int));
printf("напишите числа последовательности:\n", n);
 
for (i=0; i < n; i++) {
vstup= scanf("%d",&pole[i] );
if(vstup <1){
printf("Неправильный вход в программу.\n");
free (pole);
return 0;}
}
qsort(pole,n,sizeof(int),compare);
int pv = 1, pcsmv = 1, mpv = 1; 
for (i=1;i<n;i++)
{
if (pole[i] == pole[i-1])
pv++;
else 
{
if (pv >= mpv)
{
mpv = pv;
pcsmv++;
}
pv = 1;
}
}
if (mpv==1) mpv=pv;
if(n==1||pcsmv==1){
printf("Число(а) повторилось %dx и это число(а): %d.\n",mpv,pole[0]);
 
free(pole);
return 0;
}
else{
printf("Число(а) повторилось %dx и это число(а): ",mpv);
int newpcsmv = 0;
pv=1;
for (i=1;i<n;i++)
{
if (pole[i] == pole[i-1])
pv++;
else
{
if (mpv == pv)
{
printf("%d", pole[i-1]);
newpcsmv++;
if (newpcsmv == pcsmv-1)
printf (" a ");
else if (newpcsmv < pcsmv-1)
printf(", ");
else
printf(".\n");
}
pv = 1;
}
}
 
}
 
if (mpv==1)
printf("%d.\n",pole[i-1]);
 
 
free(pole);
return 0;
}
Verysilent
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 3
16.11.2009, 02:27  [ТС]     Последовательность чисел. #4
спасибо, решение найдено, выкладываю,может еще кому интересно

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <stdio.h>
#include <stdlib.h>
 
#define MAXVAL 10000
 
static int nelem = 0;
static int found[MAXVAL];
 
void
addtoarr(int n)
{
    found[nelem++] = n;
}
 
int
icmp(const void *p1, const void *p2)
{
    int d1, d2;
 
    d1 = *(int *) p1;
    d2 = *(int *) p2;
 
    if(d1 > d2)
        return 1;
    else if(d1 < d2)
        return -1;
    else
        return 0;
}
 
int
main(void)
{
    int i, j, n, nums, *pole, nmax, tmax;
 
    printf("укажите количество чисел в последовательности:\n");
    scanf("%d", &n);
    if(n <= 0 || n >= MAXVAL) {
        printf("Неправильный вход в программу\n");
        return -1;
    }
    
    pole = (int *) malloc(n * sizeof(int));
    if(pole == NULL) {
        perror("malloc");
        return -1;
    }
 
    printf("напишите числа последовательности:\n");
    for(i = 0; i < n; i++)
        if(!scanf("%d", &pole[i])) {
            printf("Неправильный вход в программу.\n");
            return -1;
        }
 
    qsort(pole, n, sizeof(pole[0]), icmp);
    
    nmax = 1;
    for(i = 0; i < n; i++) {
        tmax = 1;
        for(j = i; j < n - 1 && pole[j] == pole[j+1]; j++)
            tmax++;
        if(tmax > nmax)
            nmax = tmax;
        i = j;
    }
 
    nums = 0;
    for(i = 0; i < n; i++) {
        tmax = 1;
        for(j = i; j < n - 1 && pole[j] == pole[j+1]; j++)
            tmax++;
        if(tmax == nmax) {
            addtoarr(pole[j]);
            nums++;
        }
        i = j;
    }
 
    printf("Числ%s повторилось %dx и это числ%s: ",
            nums > 1 ? "а" : "о",
            nmax,
            nums > 1 ? "а" : "о");
 
    for(i = 0; i < nelem; i++)
        printf("%d%s", found[i],
                i == nelem - 1 ? "." :
                (i == nelem - 2 ? " и " : ", "));
    printf("\n");
 
    free(pole);
    getchar();
    getchar();
    return 0;
}
Yandex
Объявления
16.11.2009, 02:27     Последовательность чисел.
Ответ Создать тему
Опции темы

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