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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.77
smolin91
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 21
#1

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. - C++

12.12.2010, 14:13. Просмотров 3071. Ответов 23
Метки нет (Все метки)

| Исходные данные - n вещественных величин.
|| При написании программы используйте динамические массивы.

1. Найти максимальный элеметн массива.
2. Найти сумму элементов массива, расположенных до последнего положительного элемента.
3. Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями.

Добавлено через 1 минуту
Буду очень признателен за вашу помощь. По возможности вам отплачу тем-же
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2010, 14:13     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b].
Посмотрите здесь:

C++ Сжать массив, удалив из него все элементы, модуль которых находится в интервале a,b
Сжать массив, удалив из него все элементы, величина которых находится на интервале [а,b] C++
C++ Сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b]
Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b] C++
Сжать массив, удалив из него элементы, модуль которых находится в заданном интервале C++
C++ Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a, b]. освободившиеся в конце массива элементы заполнить нулями.
C++ Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, b]
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
12.12.2010, 14:16     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #2
Используйте поиск, такие задачи уже не раз на форуме рашались!!!!!
smolin91
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 21
12.12.2010, 15:08  [ТС]     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #3
я не смог сделать так как мне надо =( из того что есть!!!
можешь сюда скинуть то что ты счетаешь нужным и правильным ?!?!?

Добавлено через 49 минут
Помогите....
срочно нужно сделать и сдать...горю.!!!!
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
12.12.2010, 15:18     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #4
Ну, на пример

Зачада на одномерный массив
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
12.12.2010, 15:41     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #5
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
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
        int i = 0;
        int j = 0;
        int cnt = 0;
        int size = 10;
 
        float max = 0;
        float sum = 0;
        float llim = -1.5;
        float rlim = +1.5;
        float *pdata = NULL;
 
        if((pdata = (float *)malloc(sizeof(float) * size)) == NULL) {
                fprintf(stderr, "can't allocated memory\n");
                exit(1);
        }
 
        for(i = 0; i < size; ++i) {
                pdata[i] = (float)rand() / rand() * (rand() % 2 ? -1 : 1);
        }
 
        for(i = 0; i < size; ++i) {
                printf("%f ", pdata[i]);
        }
        printf("\n");
 
        max = pdata[0];
        for(i = 0; i < size; ++i) {
                if(max < pdata[i])
                        max = pdata[i];
        }
        printf("max: %f\n", max);
 
        sum = 0;
        for(i = 0; i < size && pdata[i] <= 0; ++i) {
                sum += pdata[i];
        }
        printf("sum: %f\n", sum);
 
        for(i = 0; i < size - cnt;  ++i) {
                if(pdata[i] >= llim && pdata[i] <= rlim) {
                        ++cnt;
                        for(j = i; j < size - cnt - 1; ++j) {
                                pdata[j] = pdata[j + 1];
                        }
 
                        for( ; j < size; ++j)
                                pdata[j] = 0.0;
 
                        --i;
                }
        }
 
        for(i = 0; i < size; ++i) {
                printf("%f ", pdata[i]);
        }
        printf("\n");
 
        free(pdata);
        return 0;
}
smolin91
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 21
12.12.2010, 16:01  [ТС]     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    int n,i,a,b,j=0;
    cout<<"  a="; cin>>a;
    cout<<"  b="; cin>>b;
    cout<<"  n="; cin>>n;
    int *x=new int[n];
    cout<<"  Array: ";
    for(i=0;i<n;i++) { x[i]=rand()%10; cout<<x[i]<<" "; }
    cout<<endl;
    cout<<"\n  New array: ";
    for(i=0;i<n;i++) if(x[i]<a || x[i]>b) { x[j]=x[i]; j++; }
    for(i=j;i<n;i++) x[i]=0;
    for(i=0;i<n;i++) cout<<x[i]<<" ";
    delete []x;
    getch();
    return 0;
}
Добавлено через 2 минуты
я взял этот код. но мне нужно ещё после замены но нули свинуть всё влево, а нули что бы были справа !!!
как это сделать?!?!?
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
12.12.2010, 16:11     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #7
smolin91, так там они и сдвигаются!!!!
smolin91
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 21
12.12.2010, 17:43  [ТС]     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #8
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
#include <iostream>
#include <conio.h>
//#include <time.h>  
using namespace std; 
int main()
{
//srand( time(NULL));
int n, a, b, *Arr, sum=0 ,pos=0, j=0;
setlocale (LC_ALL, "Russian");
        int max=-99,i;
  cout<< "\n Введите размер массива =\n ";
        cin >> n;
 
        cout<<"  Ввидите интервал чисел, модуль которых должен быть удален из массива.\n Освободившиеся в конце массива элементы заполняться нулями.\n a= \n    "; cin>>a;
    cout<<" b=\n    "; cin>>b;
        Arr = new int[n];
  cout<< " Массив:\n    " << " ";
        for(int i=0; i<n; i++)
{   Arr[i]=rand()%21-10;
        cout<< Arr[i] << " ";
        if (Arr[i]<0);  }
        for (int i=0; i<n; i++)
      if (Arr[i]>max)
      max=Arr[i];
  cout<< "\n Максимальный элемент массива =\n   " << max <<endl;
  for(i=n-1; i>=0; i--)
{   if (pos>=1) sum+=Arr[i];
  if (pos>=0)pos++;}
  cout<< " Сумма элементов массива,расположенных до последнего положительного элемента =\n  " << sum <<endl;
 
 
    cout<<"  Array: ";
    for(i=0;i<n;i++) { Arr[i]=rand()%10; cout<<Arr[i]<<" "; }
    cout<<endl;
    cout<<"\n  New array: ";
    for(i=0;i<n;i++) if(Arr[i]<a || Arr[i]>b) { Arr[j]=Arr[i]; j++; }
    for(i=j;i<n;i++) Arr[i]=0;
    for(i=0;i<n;i++) cout<<Arr[i]<<" ";
return 0;
}
Добавлено через 43 секунды
kak sdelat 4to-bi bil tolko ODIN massiv s kotorim vse proisxodili bi ?!?!?!

Добавлено через 12 минут
я уже сделал ОДИН массив! Но теперь у меня массив с отрецательными числами, а ПО ЗАДАНИЮ модуль чисел заданных пользователем должны быть превращены в ноль и все нули должны уйти в конец массива!
так как сделать МОДУЛЬ ?

 Комментарий модератора 
Используйте теги форматирования кода.
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
12.12.2010, 17:47     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #9
модуль числа x - abs(x);

библиотека

C
1
#include <math.h>
или

C++
1
#include <cmath>
smolin91
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 21
12.12.2010, 17:57  [ТС]     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #10
это понятно, а в коде нужно же ещё что-то добавить!
куда и что?
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
12.12.2010, 18:09     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #11
Блин, ступил, вот так правильно

C++
1
if(abs(Arr[i])<a && abs(Arr[i])>b) { Arr[j]=Arr[i]; j++; }
smolin91
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 21
12.12.2010, 18:36  [ТС]     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #12
ДА! спасибо!
получилось всё от и до! =)))
15045
0 / 0 / 0
Регистрация: 05.12.2010
Сообщений: 14
12.12.2010, 20:25     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #13
Задали написать программу на C++ :Ввести массив из 13 целых чисел в StringGrid.Определить, элементы расположены по возрастанию или нет. Помогите написать программу, пожалуйста
smolin91
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 21
12.12.2010, 20:39  [ТС]     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #14
Люди а кто-то может сделать правильный алгоритм к моему заданию ?!?!?
smolin91
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 21
13.12.2010, 15:06  [ТС]     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #15
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
#include <iostream>
#include <conio.h>
#include <time.h>  
using namespace std; 
int main()
{
srand( time(NULL));
int n, a, b, *Arr, sum=0 ,pos=0, j=0;
setlocale (LC_ALL, "Russian");
int max=-99,i;
 
    cout<< "\n Введите размер массива =\n   ";
        cin >> n;
    cout<<"  Ввидите интервал чисел \n a = \n   ";
        cin>>a;
    cout<< " b =\n  ";
        cin>> b;
    
    Arr = new int[n];
    cout<< " Массив:\n  " << " ";
    for(int i=0; i<n; i++)
    {   Arr[i]=rand()%21-10;
    cout<< Arr[i] << " ";
 
    if (Arr[i]<0);  };
    for (int i=0; i<n; i++)
        if (Arr[i]>max)
            max=Arr[i];
 
    cout<< "\n Максимальный элемент массива =\n " << max <<endl;
    for(i=n-1; i>=0; i--)
    {   if (pos>=1);
    if (pos>=0)pos++;   }
 
    cout<< " Сумма элементов массива,расположенных до последнего положительного элемента =\n    " << sum;
    cout<<"\n Новый массив. в котором отсудствует интервал Вами заданный : \n   ";
    for(i=0;i<n;i++)
        if(abs(Arr[i])<a || abs(Arr[i])>b)
        {   Arr[j]=Arr[i]; j++; }
        for(i=j;i<n;i++) Arr[i]=0;
        for(i=0;i<n;i++)
            cout<< Arr[i] << " ";
    cout << "\n Конец! \n" <<endl;
        return 0;   }
Добавлено через 2 минуты
куда нужно втавить значение double или float или что-то друго, что бы массив был вещественных чисел, т.е. в нем должны быть не только целые числа, но и дробные.
что нужно поменять ?!?!?!?
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
13.12.2010, 15:08     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #16
C++
1
2
3
double *Arr,sum=0.0,a,b,max=-99.0;
 
Arr= new double[n];
smolin91
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 21
13.12.2010, 15:48  [ТС]     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #17
не получается!!!

Добавлено через 15 минут
я задаю
массив 10 чисел
а = 2
в = 6
и всёрано не работает!
даже если
а= 2,2
в = 3,5
и всёравно не работает!
МНЕ НУЖНО ЧТО-БЫ сам массив был массивом вещественных чисел, т.е. в нем должны быть не только целые числа, но и дробные
asics
Freelance
Эксперт C++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
13.12.2010, 15:53     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #18
smolin91,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <ctime>
#include <cstdlib>
 
int main()
{
        const size_t n = 5;
        double a[n], d = 0.1;
        srand(time(0));
        for(int i = 0; i < n; ++i, d += 0.3)
        {
            a[i] = static_cast<double>(rand() % 10) + d;
            std::cout << a[i] << "   ";
        }
        return 0;
}
smolin91
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 21
13.12.2010, 16:02  [ТС]     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #19
а можите сделать под мой массив ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2010, 16:21     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b].
Еще ссылки по теме:

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями C++
Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, b] C++
C++ Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]
C++ Сжать массив, удалив из него все элементы, величина которых находится в интервале [a, b]
C++ Сжать массив, удалив из него все элементы, модуль которых находится в заданном интервале

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

Или воспользуйтесь поиском по форуму:
asics
Freelance
Эксперт C++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
13.12.2010, 16:21     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. #20
smolin91, А чем "твой" масив отличается от простых ?Просто вставь где нужно некоторые строки из мого кода в свой.
Yandex
Объявления
13.12.2010, 16:21     Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b].
Ответ Создать тему
Опции темы

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