Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
#1

В массиве, состоящем из п вещественных элементов, вычислить - C++

01.10.2011, 19:19. Просмотров 977. Ответов 14
Метки нет (Все метки)

помогите написать прогу в С++
В массиве, состоящем из п вещественных элементов, вычислить:
- номер минимального по модулю элемента массива (если таких элементов несколько, найти первый);
- сумму модулей элементов массива, расположенных после первого отрицательного элемента.
Сжать массив, удалив из него все элементы, равные заданному числу Р. Освободившиеся в конце массива элементы заполнить нулями.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2011, 19:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В массиве, состоящем из п вещественных элементов, вычислить (C++):

В одномерном массиве, состоящем из вещественных элементов вычислить номер минимального элемента в массиве, сумму элементов массива - C++
В одномерном массиве, состоящем из 10 вещественных элементов вычислить: 1. Номер минимального элемента в массиве 2. Сумму...

В одномерном массиве, состоящем из n вещественных элементов, вычислить: - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) количество элементов массива, лежащих в диапазоне от А до В; ...

В одномерном массиве, состоящем из n вещественных элементов, вычислить - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)произведение и количество отрицательных элементов массива; ...

В одномерном массиве, состоящем из n вещественных элементов, вычислить: - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: — сумму положительных элементов массива; — произведение...

В одномерном массиве,состоящем из N вещественных элементов,вычислить: - C++
В одномерном массиве,состоящем из N вещественных элементов,вычислить: 1)количество элементов массива,равных 0 2)сумму эл-ов...

В одномерном массиве , состоящем из n вещественных элементов, вычислить: - C++
1) произведение элементов массива с четными номерами; 2) сумму элементов массива, расположенных между первым и последним нулевыми...

14
Петррр
5972 / 3409 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
01.10.2011, 19:55 #2
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
#include <iostream>
 
using namespace std;
 
void del(int *array, int len, int pos, int zeroCount)
{
    for(int i = pos; i < len - 1; i++)
        array[i] = array[i + 1];
    for(int i = len - 1; zeroCount > 0; i--, zeroCount--)
        array[i] = 0;
}
 
int main(int argc, char ** argv)
{
    const int len = 20;
    int *array = new int[len];
    for(int i = 0; i < len; i++)
    {
        array[i] = rand() % 50 - 50;
        cout << array[i] << " ";
    }
    int pos = 0;
    int min = abs(array[pos]);
    
    for(int i = 0; i < len; i++)
        if (min > abs(array[i]))
        {
            pos = i;
            min = abs(array[pos]);
        }
    int sum = 0;
    for(int i = pos; i < len; i++)
        sum += array[i];
    cout << "\nMin position: " << pos << "\nsum: " << sum << endl;
    int p;
    cout << "enter P: ";
    cin >> p;
    int zeroCount = 0;
    for(int i = 0; i < len; i++)
        if (array[i] == p)
            del(array, len, i, ++zeroCount);
    for(int i = 0; i < len; i++)
        cout << array[i] << " ";
    cout << endl;
    delete [] array; 
    system("pause");
    return 0;
}
1
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
03.10.2011, 21:47  [ТС] #3
Использовать статический массив. Максимальную размерность массива задать именованной константой. Реальное количество элементов массива ввести с клавиатуры с контролем на выход за границы массива. Массивы должны состоять не менее, чем из одного элемента.
Предусмотреть два способа заполнения массива: с клавиатуры и с помощью датчика случайных чисел. В последнем случае перед заполнением массива ввести границы интервала, которому должны принадлежать элементы массива.
Вывести результаты расчетов. Если по каким-либо причинам решение задачи невозможно, вывести соответствующее сообщение.
Дополнительных массивов для преобразования данных использовать нельзя.
0
Almiqui
Почетный модератор
13979 / 3594 / 86
Регистрация: 11.06.2009
Сообщений: 11,796
03.10.2011, 21:53 #4
Алексей_123, с кем беседы ведете ? Тихо сам с собою ? Спасибы говорить не учили Вас ? Или все по-барабану ?
1
vetvet
03.10.2011, 21:57
  #5

Не по теме:

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

1
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
03.10.2011, 22:06  [ТС] #6
спасибо, просто я ен все условие скинул(
0
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
10.10.2011, 18:14  [ТС] #7
Использовать статический массив. Максимальную размерность массива задать
именованной константой. Реальное количество элементов массива ввести с клавиатуры с
контролем на выход за границы массива. Массивы должны состоять не менее, чем из одного
элемента.
Предусмотреть два способа заполнения массива: с клавиатуры и с помощью датчика
случайных чисел. В последнем случае перед заполнением массива ввести границы
интервала, которому должны принадлежать элементы массива.
Вывести результаты расчетов. Если по каким-либо причинам решение задачи
невозможно, вывести соответствующее сообщение.
Дополнительных массивов для преобразования данных использовать нельзя.

В массиве, состоящем из п вещественных элементов, вычислить:
- номер минимального по модулю элемента массива (если таких элементов несколько, найти первый);
- сумму модулей элементов массива, расположенных после первого отрицательного элемента.
Сжать массив, удалив из него все элементы, равные заданному числу Р. Освободившиеся в конце массива элементы заполнить нулями.


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
#include <iostream>
using namespace std;
int main()
{ int u,v,n,i,k,p,len,pos,Count;
  const N=100;
  int ar[N];
{
            cout<<"vvedite interval chisel:"<<endl;
            cout<<"nachalo otrezka:"<<endl;
            cin>>u;
            cout<<"koniec otrezka:"<<endl;
            cin>>v;
            cout<<"nachalniy massiv:"<<endl;
            for (int i=0;i<len;i++)
            {
                ar[i]=rand()%(v-u-1)+(u+1);
                cout<<ar[i]<<"yavlyaetsya "<<i<<" elementom massiva"<<endl;
            }
            }
        int pos = 0;
        int min = abs(ar[pos]);
        
        for(int i = 0; i < len; i++)
                if (min > abs(ar[i]))
                {
                        pos = i;
                        min = abs(ar[pos]);
                }
        int sum = 0;
        for(int i = pos; i < len; i++)
                sum += ar[i];
        cout << "\nMin position: " << pos << "\nsum: " << sum << endl;
        int p;
        cout << "enter P: ";
        cin >> p;
for (i=0; i<len; i++)
{
if (ar[i]==p)
{
for (k=i; i<len; k++)
{
ar[k]=ar[k+1] ;
ar[len-1]=0;
}
i--
}
}      
                cout << ar[i] << " ";
        cout << endl;
        
        system("pause");
        return 0;
}

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

Добавлено через 18 часов 27 минут
укажите хотябы, какой участок неправильно написан

Добавлено через 3 часа 10 минут
тут уже 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
#include <iostream>
using namespace std;
int main()
{ int u,v,n,i,k,p,len,pos,Count,pos;
int const N=100;
  int ar[N];
    {
            cout<<"vvedite interval chisel:"<<endl;
            cout<<"nachalo otrezka:"<<endl;
            cin>>u;
            cout<<"koniec otrezka:"<<endl;
            cin>>v;
            cout<<"nachalniy massiv:"<<endl;
            for (int i=0;i<len;i++)
            {
                ar[i]=rand()%(v-u-1)+(u+1);
                cout<<ar[i]<<"yavlyaetsya "<<i<<" elementom massiva"<<endl;
            }
            
    }
         pos = 0;
        int min = abs(ar[pos]);
        
        for(int i = 0; i < len; i++)
                if (min > abs(ar[i]))
                {
                        pos = i;
                        min = abs(ar[pos]);
                }
        int sum = 0;
        for(int i = pos; i < len; i++)
                sum += ar[i];
        cout << "\nMin position: " << pos << "\nsum: " << sum << endl;
       p;
        cout << "enter P: ";
        cin >> p;
for (i=0; i<len; i++)
{
if (ar[i]==p)
{
for (k=i; i<len; k++)
{
ar[k]=ar[k+1] ;
ar[len-1]=0;
}
i--;
}
}      
                cout << ar[i] << " ";
        cout << endl;
        
        system("pause");
        return 0;
}
0
aeshes
441 / 204 / 13
Регистрация: 07.10.2011
Сообщений: 462
10.10.2011, 18:21 #8
в строке
C++
1
 int u,v,n,i,k,p,len,pos,Count,pos;
один pos лишний

Но вообще компилятор же обо всем сообщает, читайте просто сообщения об ошибках
0
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
11.10.2011, 18:08  [ТС] #9
спасибо большое, но все равно прога не работает, я вооже начало и конец интервала, а затем выскакиевает ошибка, связанная с len, помогите тееперь с ней разобраться

Добавлено через 1 час 33 минуты
а именно пишет, что len не инициализирован

Добавлено через 2 часа 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <time.h>
#include <cmath>
 
using namespace std;
int main()
{ int u,v,n,i,k,p,len,pos,Count;
srand(time(NULL));
int const N=100;
  int ar[N];
  cout<<"vvedite kilichestvo chisel:"<<endl;
  cin>>len;
    {
            cout<<"vvedite interval chisel:"<<endl;
            cout<<"nachalo otrezka:"<<endl;
            cin>>u;
            cout<<"koniec otrezka:"<<endl;
            cin>>v;
            cout<<"nachalniy massiv:"<<endl;
            
            for (int i=0;i<len;i++)
            {
                ar[i]=rand()%(v-u-1)+(u+1);
                cout<<ar[i]<<"yavlyaetsya "<<i<<" elementom massiva"<<endl;
            }
            
    }
         pos = 0;
        int min = abs(ar[pos]);
        
        for(int i = 0; i < len; i++)
                if (min > abs(ar[i]))
                {
                        pos = i;
                        min = abs(ar[pos]);
                }
        int sum = 0;
        
        for(int i = pos; i < len; i++)
                sum += ar[i];
        cout << "\nMin position: " << pos << "\nsum: " << sum << endl;
       p;
        cout << "enter P: ";
        cin >> p;
        for (i=0; i<len; i++)
        {
if (ar[i]==p)
   {
for (k=1; k<len; k++)
{
ar[k]=ar[k+1] ;
ar[k+1]=0;
   }
i--;
}
        } 
 
      for(i=0;i<len;i++)
                cout << ar[i] << " ";
        cout << endl;
        
        system("pause");
        return 0;
}
Добавлено через 18 часов 53 минуты
мб все же ето-нибудь поможет исправить, не правильно находит сумму модулей элементов массива, расположенных после первого отрицательного элемента. и все то же число P

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
#include <iostream>
#include <time.h>
#include <cmath>
 
using namespace std;
int main()
{ int u,v,i,k,p,len,pos,x;        
srand(time(NULL));
int const N=100;
  int ar[N];
  cout<<"vvedite kilichestvo chisel:"<<endl;
  cin>>len;
  cout<<"vvodit dannye:1-c kklaviaturi; 2-generator"<<endl;
  cin>>x;
  if(x==1)
  {
      for(i=0;i<len;i++)
      {
          cout<<"vvedite "<<i<<"element massiva"<<endl;
          cin>>ar[i];
      }
  }
  if(x==2)
    {
            cout<<"vvedite interval chisel:"<<endl;
            cout<<"nachalo otrezka:"<<endl;
            cin>>u;
            cout<<"koniec otrezka:"<<endl;
            cin>>v;
            cout<<"nachalniy massiv:"<<endl;
            
            for (int i=0;i<len;i++)
            {
                ar[i]=rand()%(v-u-1)+(u+1);
                cout<<ar[i]<<"yavlyaetsya "<<i<<" elementom massiva"<<endl;
            }
            
    }
         pos = 0;
        int min = abs(ar[pos]);
        
        for(int i = 0; i < len; i++)
                if (min > abs(ar[i]))
                {
                        pos = i;
                        min = abs(ar[pos]);
                }
        int sum = 0;
        
        for(int i = pos; i < len; i++)
                sum += abs(ar[i]);
        cout << "\nMin position: " << pos << "\nsum: " << sum << endl;
        cout << "enter P: ";
        cin >> p;
        for (i=0; i<len; i++)
        {
                if (ar[i]==p)
                   {
                        for (k=i+1; k<len; k++)
                        {
                            ar[k]=ar[k+1] ;
                            ar[k+1]=0;
                        }
                        i--;
                    }
        } 
 
      for(i=0;i<len;i++)
                cout << ar[i] << " ";
        cout << endl;
        
        system("pause");
        return 0;
}
0
aeshes
441 / 204 / 13
Регистрация: 07.10.2011
Сообщений: 462
11.10.2011, 18:16 #10
Цитата Сообщение от Алексей_123 Посмотреть сообщение
не правильно находит сумму модулей элементов массива, расположенных после первого отрицательного элемента
так вы сумму считаете не для элементов после первого отрицательного, а для элементов после минимального по модулю

вам сначала надо найти индекс первого отрицательного pos2 и считать сумму, начиная с pos2+1
0
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
11.10.2011, 18:33  [ТС] #11
я уже не понимаю как это сделать)
0
aeshes
441 / 204 / 13
Регистрация: 07.10.2011
Сообщений: 462
11.10.2011, 18:56 #12
Этот кусок
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 pos = 0;
        int min = abs(ar[pos]);
        
        for(int i = 0; i < len; i++)
                if (min > abs(ar[i]))
                {
                        pos = i;
                        min = abs(ar[pos]);
                }
        int sum = 0;
                
        for(int i = pos; i < len; i++)
                sum += abs(ar[i]);
        cout << "\nMin position: " << pos << "\nsum: " << sum << endl;
должен быть таким
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
pos = 0;
        int min = abs(ar[pos]);
        
        for(int i = 0; i < len; i++)
                if (min > abs(ar[i]))
                {
                        pos = i;
                        min = abs(ar[pos]);
                }
        cout<<"Min element="<<min<<" position of min is "<<pos<<endl;
        
        //теперь находим позицию первого отрицательного
        pos=-1;
        for(int i=0;i<len;i++)
            if(ar[i]<0)
            {
                 pos=i;
                 break;
            }
       if(pos==-1)
          cout<<"No negative elements in array!\n";
       else
       {
            int sum = 0;
             
        for(int i = pos+1; i < len; i++)//pos+1 - чтобы не включать само первое отрицательное в сумму
                sum += abs(ar[i]);
        cout << "\nSum: " << sum << endl;
     }
1
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
11.10.2011, 19:12  [ТС] #13
не могли бы вы написать этот участок?

Добавлено через 39 секунд
спасибо, просто не заметил, что уже на другую страницу сообщения перескачили
0
aeshes
441 / 204 / 13
Регистрация: 07.10.2011
Сообщений: 462
11.10.2011, 19:26 #14
Алексей_123, кто? и какой участок? если вы про мой предыдущий пост, то это вычисление суммы модулей после первого отрицательного
Просто в своей программе находите первый (верхний) кусок кода и заменяете его на второй (нижний)

Добавлено через 12 минут
вот удаление
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        cout << "enter P: ";
        cin >> p;
        for (int i=0; i<len; i++)
        {
            if (ar[i]==p)
            {
                   for (k=i; k<len-1; k++)
                   {
                       ar[k]=ar[k+1] ;
                   }
                  ar[len-1]=0;
             i--;
           }
        }
0
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
11.10.2011, 19:35  [ТС] #15
aeshes, большое спасибо,очень помогли, уже разобрался, просто вначале запутался в сообщениях.
0
11.10.2011, 19:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2011, 19:35
Привет! Вот еще темы с ответами:

В одномерном массиве, состоящем из N вещественных элементов, вычислить - C++
В одномерном массиве, состоящем из N вещественных элементов, вычислить: 1. максимальный по модулю элемент массива; 2. сумму...

В одномерном массиве, состоящем из n вещественных элементов, вычислить: - C++
1) среднее арифметическое всех положительных элементов; 2) сумму элементов, расположенных до максимального элемента. Объясните...

[C++] В одномерном массиве,состоящем из n вещественных элементов ,вычислить... - C++
Задание 1 В одномерном массиве,состоящем из n вещественных элементов ,вычислить: 1)сумму отрицательных элементов массива ...

В одномерном массиве, состоящем из n вещественных элементов, вычислить: - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) максимальный по модулю элемент массива и его номер; 2) сумму...


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

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

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