Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2017, 13:14   #1
Варя07
Новичок
Джуниор
 
Регистрация: 30.04.2017
Сообщений: 1
По умолчанию Массивы в Си++

Абсолютно ничего не понимаю в массивах. Помогите, пожалуйста, решить.

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

Первая часть программы есть, но почему-то неправильно считает сумму. Что не так?

Код:
#include <iostream> 
#include <time.h>
#include <windows.h> 
#include <conio.h>
using namespace std; 
#define N 10
int main() 
{
    int a[N];
    int i, sum=0, m1, m2;
    srand(time(NULL));
    for (i=0;i<N;i++)
        a[i]=rand()%10-3; 
    for (i=0;i<N;i++)
        cout << "a[" << i << "]=" << a[i]<<"\n";

    for (int i=0;i<N;i++) 
    { 
		if (a[i]<0) 
		{
			m1=i; 
		}
		break;
	}
	
	for (int i=0;i<N;i++) 
	{ 
		if (a[i]<0)
		{
			m2=i; 
		}
		break;
	}
	
    for (int i=m1;i<m2;i++)  
    {
	sum=sum+a[i]; //прибавляем к уже накопленной сумме значение i-го элемента массива 
    }
    cout<<sum; 
    getch();
    return 0; 
}

Последний раз редактировалось Аватар; 30.04.2017 в 13:23.
Варя07 вне форума Ответить с цитированием
Старый 01.05.2017, 00:37   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вроде забацал (только я не пойму, если отрицательные элементы расположены один сразу после другого - это 0?
Потому что может быть ещё ситуация, когда между отрицательными элементами - именно 0-ль стоять - и это действительно 0-ль):

Код:
#include <iostream> 
#include <time.h>
#include <windows.h> 
#include <conio.h>
using namespace std;
#define N 10
int main()
{
	int a[N];
	int sum = 0;
	srand(time(NULL));
	int i, j;
	for (i = 0; i<N; i++)
		a[i] = rand() % 10 - 3;
	for (i = 0; i<N; i++)
		cout << "a[" << i << "]=" << a[i] << "\n";

	for (i = 0; i < N; i++)
	{
		if (a[i] < 0)
		{
			break;
		}		
	}

	for (j = i + 1; j < N; j++)
	{
		if (a[j] < 0)
		{
			break;
		}		
	}

	for (int k = i + 1; k <= j - 1; k++)
	{
		sum = sum + a[k]; //прибавляем к уже накопленной сумме значение i-го элемента массива 
	}
	cout << sum;
	getch();
	return 0;
}

Последний раз редактировалось ura_111; 01.05.2017 в 00:40.
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать программу массивы (C++) - Даны два массива, скопировать эти массивы в 3-й результирующий (размером 10 элементов) так, что Саша1990 Помощь студентам 1 02.02.2015 16:03
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12