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

Сумма элементов массива, расположенных после первого положительного элемента - C++

Восстановить пароль Регистрация
 
ArtAlex777
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 50
22.02.2014, 14:47     Сумма элементов массива, расположенных после первого положительного элемента #1
Помогите доделать последний пункт задачи, пожалуйста! Работаю в Visual Studio 2005, так уж заставили..
В интернете искал, но что-то более-менее не нашел...
Задание: В одномерном массиве из N вещественных элементов, вычислить:
• номер максимального по модулю элемента массива;
• сумму элементов массива, расположенных после первого положительного элемента.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых лежит в интервале [a,b], а потом – все остальные.

Доделать надо последний пункт.

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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <cmath>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian");
const int n=8;
    double mas[n],max,Sum=0;
    int i,maxI=0;
 
    /* Читаем массив.*/
    for (i=0;i<n;i++) scanf("%lf",&mas[i]);
    /* Ищем индекс минимального по модулю. */
    max=fabs(mas[0]);
    for (i=0;i<n;i++)
        if (max<fabs(mas[i])) {
            max=fabs(mas[i]);
            maxI=i;
        }
    printf("Номер максимального по модулю элемента: %d\n",maxI+1);
 
    /* Находим сумму модулей элементов после первого положительного. */
    maxI=n-1;
    for (i=0;i<n;i++) if (mas[i]>0){
        maxI=i;
        break;
    }
    for (i=(maxI+1);i<n;i++) Sum+=(mas[i]);
    printf("Сумма после первого положительного числа: %lf\n",Sum);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 14:47     Сумма элементов массива, расположенных после первого положительного элемента
Посмотрите здесь:

C++ Найти сумму элементов массива, расположенных после первого положительного элемента
C++ Сумма элементов массива, расположенных после минимального элемента
C++ В одномерном массиве вычислить номер максимального элемента массива и сумму элементов массива, расположенных после первого положительного
Найти сумму элементов одномерного массива размером k, расположенных после первого положительного элемента C++
Найти сумму элементов массива, расположенных после первого положительного элемента C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
22.02.2014, 15:22     Сумма элементов массива, расположенных после первого положительного элемента #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
double buf;
int k=0;
for(int i=0;i<n;i++)
if(int(mas[i]>=a)&&int(mas[i]<=b)) 
{
buf=mas[i];
mas[i]=mas[k];
mas[k]=buf;
k++;
}
for(int i=0;i<n;i++)
cout<<mas[i]<' ';
ArtAlex777
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 50
22.02.2014, 16:33  [ТС]     Сумма элементов массива, расположенных после первого положительного элемента #3
не прокатывает условие. Например, ввожу массив чисел : 8 9 5 15 6 18 19 2 и интервал [10:20] то выводит так: 15 18 19 8 6 9 5 2

Добавлено через 1 минуту
Цитата Сообщение от Amandosov Посмотреть сообщение
cout<<mas[i]<' ';
можно через printf написать? как будет выглядеть?
ArtAlex777
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 50
22.02.2014, 17:28  [ТС]     Сумма элементов массива, расположенных после первого положительного элемента #4
Сумма элементов массива, расположенных после первого положительного элемента
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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <cmath>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian");
const int n=8;
    double mas[n],max,Sum=0;
    int i,maxI=0;
 
    /* Читаем массив.*/
    for (i=0;i<n;i++) scanf("%lf",&mas[i]);
    /* Ищем индекс максимального по модулю. */
    max=fabs(mas[0]);
    for (i=0;i<n;i++)
        if (max<fabs(mas[i])) {
            max=fabs(mas[i]);
            maxI=i;
        }
    printf("Номер максимального по модулю элемента: %d\n",maxI+1);
 
    /* Находим сумму модулей элементов после первого положительного. */
    maxI=n-1;
    for (i=0;i<n;i++) if (mas[i]>0){
        maxI=i;
        break;
    }
    for (i=(maxI+1);i<n;i++) Sum+=(mas[i]);
    printf("Сумма после первого положительного числа: %lf\n",Sum);
 
       const double left = 10, right = 20; 
 
       for (int i = 0, j = 0; i < n; i++) 
       { 
           if (mas[i] <= right && mas[i] >= left) 
    { 
                double temp = mas[i]; 
                mas[i] = mas[j]; 
                mas[j] = temp; 
                j++; 
           } 
       } 
for(int i=0;i<n;i++)
printf("%f",mas[i]);
    return 0;
}
Проверьте программу, вроде работает, но последнюю 3 часть " Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых лежит в интервале [a,b], а потом – все остальные." не выводит как надо!
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
22.02.2014, 22:52     Сумма элементов массива, расположенных после первого положительного элемента #5
ArtAlex777, но там не написано же, чтобы выводит по порядку. Я и вывел в начале массива те элементы которые лежат в этом интервале а потом остальные: 15 18 19 - те кто входит; 8 6 9 5 2 - те кто не входит, итого 15 18 19 8 6 9 5 2

Добавлено через 1 минуту
Цитата Сообщение от Amandosov Посмотреть сообщение
cout<<mas[i]<' ';
C++
1
printf("%f",mas[i]);
ArtAlex777
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 50
23.02.2014, 14:50  [ТС]     Сумма элементов массива, расположенных после первого положительного элемента #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int a,b;
       printf("ведите a,b:");
       scanf("%d,%d", &a, &b);
        
for (int i= 0; i < n; i++) 
      
if ((mas[i] <= b && mas[i] >= a))
printf("%0.1lf\n", mas[i]);
 
for (int x= 0; x < n; x++) 
      
if (!(mas[x] <= b && mas[x] >= a))
printf("%0.1lf\n", mas[x]);
 
    return 0;
}
Так пойдет? или как можно упростить?
Yandex
Объявления
23.02.2014, 14:50     Сумма элементов массива, расположенных после первого положительного элемента
Ответ Создать тему
Опции темы

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