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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 61, средняя оценка - 4.89
girlsbest
0 / 0 / 0
Регистрация: 27.10.2008
Сообщений: 14
#1

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

27.10.2008, 19:48. Просмотров 7475. Ответов 2
Метки нет (Все метки)

8. Элементы массива расположить в обратном порядке, не используя дополнительный массив. Написать программу, в которой исходный массив заполнить случайным образом элементами в пределах от 101 до 200. Вывести на экран элементы исходного и полученного массивов.
9. Написать фрагмент программы для определения, какое из чисел встречается в массиве чаще всего.
10. Написать рекурсивную функцию поиска элемента в упорядоченном по убыванию массиве.
плиз...очень нужно
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2008, 19:48     Определить, какое из чисел встречается в массиве чаще всего
Посмотрите здесь:
Определить какое из чисел встречается в массиве чаще C++
Проверить, есть ли в массиве А [n] числа В и С и определить, какое из чисел встречается в массиве чаще C++
C++ Определить, какое слово встречается в строке чаще всего
Определить, какое слово встречается в строке чаще всего C++
Определить какое слово в строке встречается чаще всего C++
C++ Определить, какое абсолютное значение встречается в массиве чаще остальных
C++ Определить модуль какого из двух чисел встречается в числовом массиве чаще
Определить какая согласная чаще всего встречается C++
Определить какой знак препинания(-,.:) встречается в строке чаще всего C++
C++ Определить, какая буква чаще всего встречается в тексте, находящемся в заданном текстовом файле
Определить, какое слово чаще встречается в строке - первое или последнее (перевести с паскаля на си) C++
C++ Найти число, которое чаще всего встречается в матрице

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Duby
Сообщений: n/a
31.10.2008, 04:00     Определить, какое из чисел встречается в массиве чаще всего #2
8. Элементы массива расположить в обратном порядке, не используя дополнительный массив. Написать программу, в которой исходный массив заполнить случайным образом элементами в пределах от 101 до 200. Вывести на экран элементы исходного и полученного массивов.
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream.h>
#include <conio.h>
#define MAX_ARR 100
 
void main(){
  int array[MAX_ARR],i,itmp; 
  clrscr();
  randomize(); //initial randomizer
 
  cout<<"Source array with randomize numbers from 101 to 200:"<<endl;
  // Put random numbers to array and print them
  for (i=0;i<MAX_ARR;i++) cout<< (array[i]=101+random(100)) << " ,";
  cout<<endl;
 
  // reverse - exchange first and last elements of array
  for (i=0;i<(MAX_ARR/2);i++){
    itmp=array[i];
    array[i]=array[MAX_ARR-1-i];
    array[MAX_ARR-1-i]=itmp;
  };
 
  cout<<"Reversed source array:"<<endl;
  // print target array
  for (i=0;i<MAX_ARR;i++) cout<< array[i] << " ,";
  cout<<endl;
 
  if (getch()==0) getch();
}
Inlight
43 / 42 / 2
Регистрация: 17.09.2008
Сообщений: 98
31.10.2008, 14:02     Определить, какое из чисел встречается в массиве чаще всего #3
Немного переделал код 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);
               }
           }
    }
}
Ответ Создать тему
Опции темы

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