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

Массив. Заменить все повторяющиеся значения одним в заданном интервале - C++

Восстановить пароль Регистрация
 
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
04.03.2013, 21:35     Массив. Заменить все повторяющиеся значения одним в заданном интервале #1
Доброго всем времени суток.Помогите пожалуйста начинающему.Пытаюсь решать задачи на массивы,но чего то не понимаю.Нужно из полученного массива заменить все повторяющиеся значения одним в заданном интервале.При заполнении массива с клавиатуры у меня все получилось,а в сформированном почему то не получается.Пожалуйста подскажите своих мозгов не хватает,а спросить не у кого.Вот мой, может быть и убогий код.
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
#include <iostream>
#include <iomanip>
#include <math.h>
 
using namespace std;
 
int main()
{
 
   const int size = 30;//объявляем статический массив на 30 элементов
   //и инициализируем или заполняем и сортируем
   double  A[size] = {0.25,0.28,0.3,0.315,0.335,0.355,0.38,0.4,0.45,0.5,0.53,0.56,0.6,0.63,
                 0.67,0.71,0.75,0.8,0.85,0.9,0.95,1.0,1.06,1.12,1.18,1.25,1.32,1.40,1.45,1.5};
 
 
    int a,b,i,j,k,l,t;
    double  D,G,S,pi;
    bool q;
    pi = 3.14;
    q = 1;
    S = 3;// задается. Задано произвольно
  D = 1;// задается. Задано произвольно
 b = 0;
 G = 0.002;// задается. Задано произвольно
double  *B = new double  [size];//объявляем динамический массив
 
//вычисляем интервал и переписываем в новый массив B[b]
    for ( i = 0; i < size; i++)
    for ( i = 0; i < size; i++)
          {
        if(A[i] >= D*0.85 && A[i]<=D*1.25)
        B[b++] =((A[i]/2)*(A[i]/2))*pi;//заполняем массив по формуле (можно и по другой)
          }
//перебираем все элементы массива В[b] 4 циклами
    for ( i = 0; i < b; i++)
      for ( j = i; j < b; j ++)
        for ( k = i; k < b; k ++)
          for ( l = i; l < b; l ++)
            for ( a = i;  a <= b*4;a ++ )// проходим 4 раза по каждому элементу массива В[b]
    if (i+j+k+l==a)                      //суммируем
    {
     double  *AB = new double  [size];//временный массив будет хранить разницу
 
     AB[a] = (B[j] + B[i]+B[k]+B[l]) - S;//вычисляем разницу
    if ((AB[a] >= -G)&&(AB[a] <=G)) //интервал
      {
    /////////////
         for (t = i; t < b; t++)//проверяем на совподения
         for (t = i; t < b; t++)
        {
            AB[t++] = AB[a];
//если найдено совподения, то меняем флаг переменной q
          if(AB[t] == AB[a])
          q = 0;
         }
 
//если совподения не было найдено, то печатаем
  if(q == 1)
     //cout << AB[t] << endl;//контрольный вывод
     cout << setw(8)<<setprecision(3) << 2*(sqrt ((B[i])/pi))<< setw(15) << 2*(sqrt ((B[j])/pi))
      << setw(15) << 2*(sqrt ((B[k])/pi))<< setw(15) << 2*(sqrt ((B[l])/pi))
      << setw(15)<<setprecision(4)  << AB[t]<< endl;
        }
//в случае число не из интервала
         else
        {
             // t--;
              //t--;
        }
//меняем флаг перед входом в новую итерацию
        q =1;
    ///////////
 delete [] AB;
  }
 
 delete [] B;
 b = 0;
  return 0;
}
Выдает не то что нужно.Выходят комбинации не входящие в интервал,а те что входят не заменяются.Не могу сообразить что я не так делаю.Не работает код между ///////
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2013, 21:35     Массив. Заменить все повторяющиеся значения одним в заданном интервале
Посмотрите здесь:

Цикл: вычислить значения функции на заданном интервале C++
C++ Найти значения функций на заданном интервале
Вывести значения функции в заданном интервале C++
C++ Вывести все нечетные числа в заданном интервале
C++ Сжать массив, удалил из него все элементы, модуль которых находится в заданном интервале
C++ Заполнить массив случайными числами в интервале [0;5]. Введите число x и найдите все значения, равные x
Вычислить значения функции на заданном интервале C++
C++ Вычислить значения функции на заданном интервале

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 12:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru