Помогите Пожалуйста. 1 Написать программу, которая находит в массиве значения,...

0 голосов
207 просмотров

Помогите Пожалуйста.

1
Написать программу, которая находит в массиве значения, повторяющиеся два и более раз, и показывает их на экран.

2
Написать программу, которая находит в массиве самое маленькое нечетное число и показывает его на экран.

ДЛЯ ВСЕХ ЗАДАНИЙ:

Размер массива вводит пользователь.
Элементы массива рандомно в диапазоне [ 13;27 ].


Информатика (227 баллов) | 207 просмотров
0

int a[1000]; int n; cout << "N = ", cin >> n; srand(time(NULL)); cout << "Массив : \n"; for (int i = 0; i < n; i++) { a[i] = rand() % 15+13; cout << a[i] << " | "; }cout << endl << endl << endl ; for (int i = n - 1; i >= 0; i--) cout << a[i] << " | ";

0

это другая Написать программу, которая выводит содержимое массива на оборот.Пример: массив 23 11 6 превращается в 6 11 23.правильно вроде ?

0

Вы же видите, что всё правильно - или не запускали?

0

for (int i = 0; i < n; i++){a[i] = rand() % 15+13;cout << a[i] << " | ";}Разве нельзя это, свернуть вот в это?for (int i = 0; i < n; i++)cout << (a[i] = rand() % 15+13)<<" | ";

0

ну вот улучшили мой код. Спасибо. буду остальные 3 задачки побывать

0

cout << "Повторяющиеся с массива- \n"; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (a[i] == a[j]) { int f = 0; for (int k = 0; k < i; k++) { if (a[k] == a[i]) { f = 1; } } if (f == 0) { cout << a[i] << "\t"; } break; } } можно как то уменьшить код ?

0

Уменьшить всегда можно, но будет ли в этом смысл. Ну, кроме int f = 1; ... if (a[k] == a[i]) f = 0; ... if (f) ... ничего бы не менял

0

Вообще, я бы заносил каждый повторившийся элемент в новый массив, и проверял бы не все предыдущие элементы, а новый массив, в котором только повторяющиеся

0

Код должен

0

Код должен ЛЕГКО ЧИТАТЬСЯ. поэтому сокращения в стиле второго комментария не нужны.

Дан 1 ответ
0 голосов
Правильный ответ

Int main()

  int  
    numOfEl,          // number of elements in the array
    minNum = 28,  // minimal number in the array   
    *mainArray,      // main array   
    cntArray[15];    // array for counting the repeated numbers

    std::cout << "Input the number of the elements: ";  <br>    std::cin >> numOfEl;

    mainArray = new int[numOfEl];

    for (int i = 0; i < 15; i++)
      cntArray[i] = 0;   

    for (int i = 0; i < numOfEl; i++)
    {
      cntArray[(mainArray[i] = rand() % 15 + 13) - 13]++;

      if (mainArray[i] < minNum && mainArray[i] % 2 != 0)
        minNum = mainArray[i]; 
    }

#ifdef _DEBUG
    std::cout << "Array: ";<br>   
    for (int i = 0; i < numOfEl; i++)
      std::cout << mainArray[i] << ";" << std::endl;<br>#endif

    std::cout << "Repeated numbers: ";<br>    for (int i = 0; i < numOfEl; i++) 
      if (cntArray[i] >= 2)
        std::cout << i + 13 << "; ";<br>
    std::cout << std::endl << "Minimal number: " << minNum << std::endl;<br>
    system("pause");
   
   return 0;
} /* End of the 'main' function */

(1.3k баллов)
0

Только тут случайные числа одни и те же будут. Добавь там 'srand(time(0));'

0

И подключи