Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 13.04.2019
Сообщений: 20
1

Алгоритмы поиска в C++

29.11.2019, 16:10. Показов 1806. Ответов 4

Здравствуйте всем, только начал изучать алгоритмы поиска, и в задании "Найти элемент, разность соседних элементов которого не меньше 72. Если таких элементов несколько, выбрать максимальный. Если таких элементов нет, выдать сообщение." не совсем хорошо отрабатывает именно выбор максимума и в целом ведёт по разному с разными элементами массива, прошу Знатоков помочь или указать где необходима поправка или оптимизация, спасибо большое
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
#include <Windows.h>
#include <iostream>
#include <TCHAR.h>
#include <cmath>
using namespace std;
 
const int N=7;
 
int main(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"rus");
    int mass[N];
    int  a, max = 0;
cout << "Введите 7 элементов" << endl ;
for (int i=0;i<N;i++)
{
    cin >> mass[i];
}
 
cout << "Введённый  массив" << " " ;
for (int i=0;i<N;i++)
{
    cout << mass[i] << endl;
}
      for (int i=1;i<N-1;i++) // цикл с главным условием
{
      if (fabs(mass[i-1] - mass[i+1])>=72)
      {
          a = mass[i];
      if (a >= max)
      {
       max = a;
      }
      }
 
} 
      if (max == a)
      {
          cout << "Подходящих числел нет " << endl;
      }
      else
          cout << "Максимальный элемент массива, у которого разность соседних элементов >=72 : " << max << endl;
    system ("pause");
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2019, 16:10
Ответы с готовыми решениями:

Алгоритмы поиска
Разработать проект, выполняющий и наглядно иллюстрирующий поиск наибольшего или наименьшего...

Алгоритмы поиска на псевдокоде
\begin{bmatrix} 8 5 7 5 7 5 \\ 7 6 2 4 5 8 \\ 2 5 7 1 1 7 \\ 4 10 2 8 2 8 \\...

Алгоритмы поиска в глубину
Помогите, пожалуйста, с решением задачи: Постройте линейный алгоритм, который проверяет, есть ли в...

Алгоритмы сортировки и поиска
Помогите, пожалуйста!! Нужно выполнить сортировку целочисленного массива (поиск в массиве) из n...

4
6582 / 4477 / 2559
Регистрация: 18.12.2017
Сообщений: 13,959
29.11.2019, 17:16 2
Цитата Сообщение от Princeofsecret Посмотреть сообщение
разность соседних элементов которого не меньше 72
модуль разности соседних элементов которого не меньше 72

если массив целочисленный:
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
#include <iostream>
#include <climits>
#include <cmath>
using namespace std;
 
int main()
{
    int n, k=0, max=INT_MIN;
    cout << "n="; cin >> n;
 
    int*a = new int[n];
 
    cout << "Enter " << n << " integer elements:\n";
    for (int i = 0; i < n; i++)
        cin >> a[i];
        
    for (int i = 1; i < n-1; i++) 
    {
        if (abs(a[i-1]-a[i+1])>=72) 
        {
            k=1;                     
            if (a[i]>=max) max=a[i];
        }
    }
    
    if (k) cout << "max=" << max << "\n";
    else cout << "Such elements are absent\n";    
 
    delete[]a;
system("pause");
return 0;
}
Добавлено через 10 минут
Princeofsecret, приведите пример неправильной работы
0
0 / 0 / 0
Регистрация: 13.04.2019
Сообщений: 20
29.11.2019, 19:56  [ТС] 3
а что если у меня только 1 вариант, а на выводе то стоит только про макс и у вас и у меня, как сделать чтобы если 1 элемент то выводит всего 1, а несколько таких элементов то уже макс
0
6582 / 4477 / 2559
Регистрация: 18.12.2017
Сообщений: 13,959
29.11.2019, 20:39 4
Цитата Сообщение от Princeofsecret Посмотреть сообщение
а что если у меня только 1 вариант, а на выводе то стоит только про макс и у вас и у меня, как сделать чтобы если 1 элемент то выводит всего 1, а несколько таких элементов то уже макс
лучше всего просто убрать из вывода слово "max" но если хотите оставить
в строке 21 предложенного кода вместо
Цитата Сообщение от Yetty Посмотреть сообщение
k=1;
напишите k++; а вывод так:
C++
1
2
3
if (k==1) cout << "value = " << max << "\n";
else if (k>1) cout << "max value = " << max << "\n";
else cout << "Such elements are absent\n";
это к вопросу не относится, но неравенство в строке 22 лучше сделать строгим
C++
1
if (a[i]>max) max=a[i];
0
0 / 0 / 0
Регистрация: 13.04.2019
Сообщений: 20
29.11.2019, 20:42  [ТС] 5
спасибо огромное, главное дали понятие и объяснили суть, а то на паре 2 часа ничем не занимаемся, (препод типа веб разработчик своими делами занимается а нам задания даёт), но я для себя тоже решаю
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2019, 20:42

Алгоритмы поиска данных из файла
Задание 1. Написать алгоритм поиска данных из файла с помощью каждого из указанных методов. Файл...

Алгоритмы поиска в линейных структурах
На молочной ферме содержится информация о коров (номер, дата рождения), о доярок (номер, ФИО) и о...

Алгоритмы поиска в структурированных множествах
Добрый вечер! Помогите пожалуйста, с заданием, не нужно его решать, просто расскажите хотя бы, как...

Бинарные и интерполяционные алгоритмы поиска
Доброго времени суток. Обращаюсь к вам за адекватным советом, как выглядят вышеупомянутые алгоритмы...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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