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

Определить, какое из чисел встречается в массиве чаще всего - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамический массив в С++: как поменять длину массива по ходу выполнения программы? http://www.cyberforum.ru/cpp-beginners/thread14746.html
Есть такая проблема: есть файл, в котором построчно записаны числа float (1 число - 1 строка). Количество чисел неизвестно. Как сделать так, т.е. какие операции надо объявить, чтоб программа читала всё следующее число и заносила его в массив, как то: FILE *op;//файл с неизвестным количеством чисел float float d; int i=0; ... while (!feof(op)) {
C++ Проблема: DevC++ отказывается компилировать (виста)! Помогите, плиз, с такой проблемой: DevC++ 4.9.9.2, скачал, установил, вроде всё работает, НО отказывается компилировать в принципе. Нажимаю кнопку - никакой реакции в принципе. Путь состоит только из латинских букв. Стоит виста (с этой системой раньше не работал). Поиск заюзался - ничего не помогает. http://www.cyberforum.ru/cpp-beginners/thread14737.html
Как передать массив через указатель? C++
Народ, такая проблема: при передаче в функцию массива через указатель, вся информация теряется и замещается бредом каким то, вот выдержка из программы: float sum(float *a, int *i); ... int main(){ ... m = sum (&a, &i); // пробовал также &a ... }
C++ Как сделать методы доступа?????
Добрый день.Есть исходный код.Нужно сделать методы доступа к полям класса с использованием односвязного списка. Помогите плиз кто знает как это делается. Вот исходный код: #include <iostream.h> #include <iomanip.h> #include <fstream.h> #include <stdlib.h> #include <string.h> #include <conio.h> int nn=0; class spisok
C++ HexToBin http://www.cyberforum.ru/cpp-beginners/thread14680.html
Подскажите как работать с этой функцией, где на форуме найти все что связано с двоичным кодом, исчислением? %)
C++ Массивы. Сортировка,максимум. Я в этом году поступил в ЮФУ и сразу начелось программирование! Я в него пока не могу вдуплить , кроме самого элементарного,типа решить уравнение с одним неизвестным. У меня скоро рейтинг, а завтра зачет и я немогу разобраться! :wall: Я приведу ниже вопросы, кто может ответте пжл :help: :help: :help:: 1) Как упорядочить числа в массиве в порядке возрастания? 2) Как найти наибольший элемент... подробнее

Показать сообщение отдельно
Inlight
43 / 42 / 2
Регистрация: 17.09.2008
Сообщений: 98
31.10.2008, 14:02     Определить, какое из чисел встречается в массиве чаще всего
Немного переделал код Duby под VS 2008. Функция ищет методом двоичного поиска. Поиск наиболее часто встречающегося элемента немного коряво реализован, зато работает Жаль, что нельзя использовать сортировку подсчётом (там доп. массивы нужны) - было бы красивее.
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
#include <iostream>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
#define MAX 100
 
int searchBinary(int* inArray, int e, int l, int r);
 
void main()
{
    int arrayOfNumbers[MAX];
    int tmp, searchingNumber, pos;
    int i, j, num = 0, buf = 0, a = 0, b = 0;
    srand(time(0)); //initial randomizer
    cout << "Source array with randomize numbers from 101 to 200:" << endl;
    // Put random numbers to array and print them
    for (int i = 0; i < MAX; i++) {
      cout << (arrayOfNumbers[i] = 101+rand()%100) << " ";
    }
    cout << endl;
    // просматриваем элемент от начала до конца, массив начинается с 0
    for (i = 0; i < MAX-1; i++) {
        // просматриваем массив со следующего от текущего положения элемента
        for (j = i+1; j < MAX; j++) {
            // если левый элемент меньше чем правый, то меняем их местами
            // т.о. меньшие элементы всплывают к концу массива
            if (arrayOfNumbers[i] < arrayOfNumbers[j]) {
                tmp = arrayOfNumbers[i];
                arrayOfNumbers[i] = arrayOfNumbers[j];
                arrayOfNumbers[j] = tmp;        
            }
        }
        if (arrayOfNumbers[i] != buf) {
            buf = arrayOfNumbers[i];
            b = 1;
        }
        else {
            b++;
            if (b > a) {
                num = buf;
                a = b;
            }
        }
        
    }
    cout << "Number " << num << " meets " << a << " times" << endl << endl <<
        "Reversed source array:" << endl;
    // print target array
    for (i=0; i < MAX; i++) {
        cout << arrayOfNumbers[i] << " ";
    }
    cout << endl << endl << "Search number: ";
    cin >> searchingNumber;
    cout << endl;
    pos = searchBinary(arrayOfNumbers, searchingNumber, 0, MAX-1);
    pos != -1 ? cout << "Find in position " << pos+1 : cout << "Not find.";
    _getch();
}
 
int searchBinary(int* inArray, int e, int head, int tail)
{   //inArray – массив, е – эталон поиска, 
    //head, tail – левая и правая границы подмассива, в котором производится поиск
    //Функция возвращает позицию найденного элемента (нумерация от 0) или -1 }
    int currPos = -1;
    if ((tail == head) && (inArray[tail] != e )) {
        return -1;
    }
    else {
           currPos = (head+tail)/2;
           if (e == inArray[currPos]) {
               return currPos;
           }
           else {
               if (e > inArray[currPos]) {
                   currPos = searchBinary(inArray, e, head, currPos);
               }
               else {
                   currPos = searchBinary(inArray, e, currPos+1, tail);
               }
           }
    }
}
 
Текущее время: 18:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru