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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2013, 21:32   #1
programmerr
 
Регистрация: 07.02.2013
Сообщений: 3
По умолчанию Записать положительные элементы массива X подряд в массив Y. Определить k – количество положительных элементов. Вычислит сумму

Записать положительные элементы массива
X=(x1,x2,…, xn) подряд в массив Y=(y1,y2,…, yk). Определить k – количество положительных элементов. Вычислить сумму элементов массива Y с нечетными индексами.

Я зделаль ну кудато ошибка есть!!! если можно сделайте готовый код на C++.
Код:
#include <iostream> 
#include <ctime> 
#include<conio.h>
using namespace std; 
int main() 
{ 
const int K = 20; 
 srand((unsigned) time(NULL)); 
 int X[K], Y[K], m, temp; 
 for (int n = 0; n < K; n++) 
 { 
 X[n] = rand() % 96 - 48; 
 cout << X[n] << ' '; 
 } 
 cout << endl << endl; 
 
 cout<<"Z=";
 for (int n = 0; n < K; n++) 
 if (X[n]>0)
 { 
  Y[m]=X[n];
 cout << Y[m] << ' ';
 } 
 float sum=0;
 for (int n=1; n<= K; n=n+2)
 sum=sum+Y[m];
 cout<<"\nSummiruem vse ne 4etnie elementi massiva\n";
 cout<<"\\n Summa:"<<sum;
 cout<<"\nKolichestvo polojitelnogo elementov K="<<m;
 getch(); 
 return 0; 
}

Последний раз редактировалось Stilet; 10.02.2013 в 21:46.
programmerr вне форума Ответить с цитированием
Старый 10.02.2013, 21:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ошибка какого рода? На какой строке?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.02.2013, 22:10   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Скажите, а наличие массива Y, принципиально. Хотя Вы же используете его для суммирования нечетных элементов.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 10.02.2013, 22:57   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
Хорошо

Код:
#include <iostream> 
#include <ctime> 
#include <conio.h>

const int K = 20;

using namespace std; 

int main(void) 
{
	int X[K] = {0}, Y[K] = {0};
	int	summa = 0, m = 0;
	system("chcp 1251 > nul");

	srand((unsigned) time(NULL)); 

	cout << " Массив X:\n";
	for (int n = 0; n < K; n++) 
	{ 
		X[n] = rand() % 96 - 48; 
		cout << ' '<< X[n];
	} 
	cout << endl << endl; 
 
	cout<<" Массив Y:\n";
	
	for (int n = 0; n < K; n++) 
	if (X[n] > 0)
	{ 
		Y[m] = X[n];
		cout << ' '<< Y[m];
		
		if((m % 2) != 0)	// Если остаток от деления не равен 0, значит индекс нечетный
			summa += Y[m];	// тогда считаем сумму
		m++;			// Увеличение счетчика m
	} 
	cout << "\n\n Количество положительных элементов: " << m;
	cout << "\n Сумма: " << summa;
 getch(); 
 return 0; 
}
Немного доработал Ваш код. Если поможет, то оставьте отзыв.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 15.02.2013, 23:12   #5
programmerr
 
Регистрация: 07.02.2013
Сообщений: 3
По умолчанию

он не правильно пошитала количество элементов и сумма положителнқй элемент всё нашол ошибку
programmerr вне форума Ответить с цитированием
Старый 15.02.2013, 23:14   #6
programmerr
 
Регистрация: 07.02.2013
Сообщений: 3
Хорошо

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Код:
#include <iostream> 
#include <ctime> 
#include <conio.h>

const int K = 20;

using namespace std; 

int main(void) 
{
	int X[K] = {0}, Y[K] = {0};
	int	summa = 0, m = 0;
	system("chcp 1251 > nul");

	srand((unsigned) time(NULL)); 

	cout << " Массив X:\n";
	for (int n = 0; n < K; n++) 
	{ 
		X[n] = rand() % 96 - 48; 
		cout << ' '<< X[n];
	} 
	cout << endl << endl; 
 
	cout<<" Массив Y:\n";
	
	for (int n = 0; n < K; n++) 
	if (X[n] > 0)
	{ 
		Y[m] = X[n];
		cout << ' '<< Y[m];
		
		if((m % 2) != 0)	// Если остаток от деления не равен 0, значит индекс нечетный
			summa += Y[m];	// тогда считаем сумму
		m++;			// Увеличение счетчика m
	} 
	cout << "\n\n Количество положительных элементов: " << m;
	cout << "\n Сумма: " << summa;
 getch(); 
 return 0; 
}
Немного доработал Ваш код. Если поможет, то оставьте отзыв.
спс прог работает!!!
programmerr вне форума Ответить с цитированием
Старый 16.02.2013, 00:50   #7
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
Хорошо

Не за что, рад был помочь!
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 16.02.2013, 16:40   #8
Ev[G]eN
C / C++ / Java
Пользователь
 
Регистрация: 23.01.2011
Сообщений: 14
По умолчанию

Код:
#include <algorithm>
#include <iostream>
#include <iterator>
#include <numeric>
#include <vector>
#include <random>
#include <ctime>

int main ()
{
    auto fRandom = std::bind(std::uniform_int_distribution <> (-25, 25),
                             std::mt19937 (time(nullptr)));
    int fVectSize = 10;
    std::vector <int> fVect (fVectSize);
    std::vector <int> sVect;

    std::cout << "First vector: " << std::endl;
    std::generate(fVect.begin(), fVect.end(), fRandom);
    std::copy(fVect.begin(), fVect.end(), std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;

    std::cout << "Second vector: " << std::endl;
    for (auto currNum: fVect)
        if (currNum > 0)
            sVect.push_back(currNum);
    std::copy(sVect.begin(), sVect.end(), std::ostream_iterator <int> (std::cout, " "));
    std::cout << "\nCount of positive elements: " << sVect.size() << std::endl;

    int index = 0;
    std::cout << "Sum of odd index elements: ";
    std::cout << std::accumulate(sVect.begin(), sVect.end(), 0, [&index] (int currSum, int currNum) -> int {
        if (index++ % 2)
            return currSum += currNum;
        return currSum;
    });
    std::cout << std::endl;

    return 0;
}
Ev[G]eN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан двумерный массив [4..7]. Hайти количество и сумму квадpатов положительных элементов массива, имеющих четные номера в строках Oraner Паскаль, Turbo Pascal, PascalABC.NET 3 04.11.2012 21:22
Дан массив чисел В[0:N]. Записать подряд в массив А элементы массива В, имеющие четные индексы,(язык си++) yury.zanilov Помощь студентам 9 15.03.2012 21:55
Записать в массив Z подряд семь нулевых элементов массива R,состоящего из N элементов.(Язык QBasic) Лиза) Помощь студентам 0 11.01.2011 16:02