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

Сравнение наиболее близких по значению элементов массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Лимит по времени http://www.cyberforum.ru/cpp-beginners/thread1042735.html
Как можно сделать еще быстрее? Время работы 1.046 сек. Хотелось бы меньше 1.00 секунды:) #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; int main()
C++ Будьте добры, подскажите подскажите пожалуйста через if или switch Даны три вещественных числа. Вывести на экран: а) те из них, которые принадлежат интервалу (а-b), б)те из них, которые принадлежат интервалу (c-d) http://www.cyberforum.ru/cpp-beginners/thread1042733.html
C++ Сумма элементов массива
#include <iostream> #include <conio.h> using namespace std; int main() { int n; cout<<"Enter number:"<<endl; cin>>n; int *a= new int; float res=1;
массивы C++
Помогите пож ^_^ Дана матрица А (5,3) {1.,2.,3.},{4.,5.,6.},{7.,8.,9.},{10.,1.,2.},{3.,4.,5.} 1)Найти max среди элементов матрицы,расположенных над побочной диагональю и его местоположение 2)Подсчитать кол-во положительных элементов в 1ой строке и произведение этих элементов по формуле Р=от j=1 ∏ до 4 |sin(Aij)| 3)заменить найденный max элемент в 1) задании на значение P
C++ Не повторяется цикл http://www.cyberforum.ru/cpp-beginners/thread1042714.html
После завершения любого пункта программа закрывается( Не получается сделать так, чтобы после завершения любого пункта, выводилось снова главное меню программы. HELP!!! #include<iostream.h> #include<fstream.h> #include<conio.h> #include<stdlib.h> #include<iomanip.h> #include <dos.h>
C++ Удалить из массива первый положительный элемент, определить, есть ли в массиве заданное число Использовать обращение к элементам матрицы с помощью операции и через указатель. Ввод элементов массива осуществлять с клавиатуры. Во время отладки и тестирования программы размер массива можно уменьшить. 1. Удалить из массива М (26) первый положительный элемент. 2. Определить, есть ли в массиве Q (10) заданное число Х, и если нет, то найти ближайшее к нему. подробнее

Показать сообщение отдельно
Kizer
 Аватар для Kizer
78 / 78 / 15
Регистрация: 20.11.2009
Сообщений: 326
15.12.2013, 19:08     Сравнение наиболее близких по значению элементов массива
Задача:
Из элементов массива A(2n) получить массивы B(n) и C(n) следующим образом. Выбрать в массиве A два наиболее близких по значению элемента, меньший из них поместить в массив B, больший — в массив C. Продолжить выбор из оставшихся элементов до полного заполнения массивов B и C.

Решение:
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
template <typename Type>
void ArrayCreate (Type *A, Type *B, Type *C, int size)
{
    int i, j, k = 0;
    int f_index =0;
    int s_index =1;
        
    while(size>1)
    {
    //float difference = std::numeric_limits<float>::max();
    //  long double difference = std::numeric_limits<long double>::infinity();
        
        int difference  = abs(A[k] - A[k+1]);
 
            for(i = 0; i<size-1; i++)
            {
                for(j = i+1; j<size; j++)
                {
                    
                    int temp = abs(A[i] - A[j]);
                    
                    if (difference > temp)
                    {
                        difference = temp;
                        f_index = i;
                        s_index = j;
                    }
                }
            }
 
        if(A[f_index] > A[s_index])
        {
            B[k] = A[f_index];
            C[k++] = A[s_index];
        }
        else
        {
            B[k] = A[s_index];
            C[k++] = A[f_index];
        }
 
 
        for(j=f_index; j<size; j++)
            A[j] = A[j+1];
        size--;
        for(j=s_index-1; j<size-1; j++)
            A[j] = A[j+1];
        size--;
    }
}
Где-то я что-то делаю не так, ибо вылезаю при сравнении за границы массива, пожалуйста подскажите где я не прав. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru