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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2011, 17:36   #1
anton6262906
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 23
По умолчанию работа с одномерным массивом

помогите пожалуйста сама суть в том что нужно написать вот такую программу:
В одномерном массиве, состоящем из n вещественных элементов,
вычислить:
− номер минимального по модулю элемента массива;
− сумму модулей элементов массива, расположенных после первого
отрицательного элемента.
Сжать массив, удалив из него все элементы, величина которых находится в
интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями.
буду очень благодарен..если не сделать к сессии не допустят
и требования такие
все нужно оформить так чтобы описать в комментариях(//) действия которые производит программа
я надеюсь на понимание..буду очень признателен..зарание спасибо
anton6262906 вне форума Ответить с цитированием
Старый 26.12.2011, 17:49   #2
Maksimall89
Пользователь
 
Аватар для Maksimall89
 
Регистрация: 10.11.2010
Сообщений: 59
По умолчанию

http://programmersforum.ru/showthread.php?t=34061
Maksimall89 вне форума Ответить с цитированием
Старый 26.12.2011, 17:54   #3
anton6262906
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Maksimall89 Посмотреть сообщение
вот уж спасибо не читал
anton6262906 вне форума Ответить с цитированием
Старый 26.12.2011, 19:18   #4
Maksimall89
Пользователь
 
Аватар для Maksimall89
 
Регистрация: 10.11.2010
Сообщений: 59
По умолчанию

У меня это получилось так.
Код:
/*
В одномерном массиве, состоящем из n вещественных элементов,
вычислить:
− номер минимального по модулю элемента массива;
− сумму модулей элементов массива, расположенных после первого
отрицательного элемента.
Сжать массив, удалив из него все элементы, величина которых находится в
интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями. 
*/
#include "stdafx.h"
#include <iostream> // поток
#include <time.h> //случайные числа
using namespace std;

const int n=10; //размер массива

int search(int a[]) // поиск минимального элемента
{
 int numbermin = 0;
 int min = a[0]; 
 // загоняет в большой цикл
 for (int i=0;i<n;i++)
 {
	 // если меньше, то запоминаем номер элемента.
	 if (abs(a[i]) < abs(min))
	 {
		 min = a[i];
		 numbermin = i; // запоминаем номер 
	 }
 }
return(numbermin);
}

int summod(int a[]) // поиск суммы 
{
	int sum = 0; // тут будет храниться сумма
	for (int i=0;i<n;i++)
	{ 
		if (a[i] < 0) // если первый элемент меньше 0, то начинаем считать
		{
			for (int j=i+1;j<n;j++) // т.к. после то прибавляем единицу
			{
				sum += abs(a[j]); // тут мы считаем суммы по модулю
			}
		return(sum);
		}
	}
	return(sum);
}

void compression(int a, int b, int arr[]) // сжимаем массив
{
	// удаляем элементы, заменой их на нули
	for (int i = a-1;i <= b-1;i++)
	{
		arr[i] = 0;
	}
	// выводим полученный после замены на нули
	cout<<"Массив после замены удаления элементов = ";
	for (int i=0;i<n;i++)
	{
		cout<<" "<<arr[i];
	}
	cout<<endl;
	// а теперь сдвигаем элементы влево, если слева 0 и на их место пишем 0
    for (int i=0;i<n-1;i++) // большой внешний цикл 
	{
		for (int j=0;j<n-1-i;j++) // маленький внутренний отвечающий за перестановку элементов "рядом стоящих"
			{
				if (arr[j] == 0) // элемент равен 0?
				{
					arr[j] = arr[j+1]; // Да, сдвигаем в лево
					arr[j+1] = 0; // обнуляем тот, что справо
				}
			}	
	}

	// выводим итоговый
	cout<<"Массив после сдвига = ";
	for (int i=0;i<n;i++)
	{
		cout<<" "<<arr[i];
	}
}

// головная программа
int main(void)
{
	srand(time(NULL)); // начальный rand
	setlocale(LC_ALL, "russian_russia.1251"); // русский текст
	system("cls"); // очистка экрана
	// объявление переменных
	int arr[n];
	int a,b;
	// выводим и заполняем массив
	cout<<"Исходный массив = ";
	for (int i = 0; i<n; i++)
	{
		arr[i]=7-(rand()%10);
		cout<<" "<<arr[i];
	}
	// вывод
	cout<<endl;
	cout<<"Номер минимального элемента по модулю = "<<search(arr)+1<<endl;
	cout<<"Сумма модулей элементов массива, расположенных после первого отрицательного элемента = "<<summod(arr)<<endl;
	cout<<"Введите предел a = ";	cin>>a;
	cout<<"Введите предел b = ";	cin>>b;
	compression(a,b,arr);
	cout<<endl;
	cin.get();
	return 0;
}
Maksimall89 вне форума Ответить с цитированием
Старый 26.12.2011, 20:20   #5
anton6262906
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Maksimall89 Посмотреть сообщение
У меня это получилось так.
Код:
/*
В одномерном массиве, состоящем из n вещественных элементов,
вычислить:
− номер минимального по модулю элемента массива;
− сумму модулей элементов массива, расположенных после первого
отрицательного элемента.
Сжать массив, удалив из него все элементы, величина которых находится в
интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями. 
*/
#include "stdafx.h"
#include <iostream> // поток
#include <time.h> //случайные числа
using namespace std;

const int n=10; //размер массива

int search(int a[]) // поиск минимального элемента
{
 int numbermin = 0;
 int min = a[0]; 
 // загоняет в большой цикл
 for (int i=0;i<n;i++)
 {
	 // если меньше, то запоминаем номер элемента.
	 if (abs(a[i]) < abs(min))
	 {
		 min = a[i];
		 numbermin = i; // запоминаем номер 
	 }
 }
return(numbermin);
}

int summod(int a[]) // поиск суммы 
{
	int sum = 0; // тут будет храниться сумма
	for (int i=0;i<n;i++)
	{ 
		if (a[i] < 0) // если первый элемент меньше 0, то начинаем считать
		{
			for (int j=i+1;j<n;j++) // т.к. после то прибавляем единицу
			{
				sum += abs(a[j]); // тут мы считаем суммы по модулю
			}
		return(sum);
		}
	}
	return(sum);
}

void compression(int a, int b, int arr[]) // сжимаем массив
{
	// удаляем элементы, заменой их на нули
	for (int i = a-1;i <= b-1;i++)
	{
		arr[i] = 0;
	}
	// выводим полученный после замены на нули
	cout<<"Массив после замены удаления элементов = ";
	for (int i=0;i<n;i++)
	{
		cout<<" "<<arr[i];
	}
	cout<<endl;
	// а теперь сдвигаем элементы влево, если слева 0 и на их место пишем 0
    for (int i=0;i<n-1;i++) // большой внешний цикл 
	{
		for (int j=0;j<n-1-i;j++) // маленький внутренний отвечающий за перестановку элементов "рядом стоящих"
			{
				if (arr[j] == 0) // элемент равен 0?
				{
					arr[j] = arr[j+1]; // Да, сдвигаем в лево
					arr[j+1] = 0; // обнуляем тот, что справо
				}
			}	
	}

	// выводим итоговый
	cout<<"Массив после сдвига = ";
	for (int i=0;i<n;i++)
	{
		cout<<" "<<arr[i];
	}
}

// головная программа
int main(void)
{
	srand(time(NULL)); // начальный rand
	setlocale(LC_ALL, "russian_russia.1251"); // русский текст
	system("cls"); // очистка экрана
	// объявление переменных
	int arr[n];
	int a,b;
	// выводим и заполняем массив
	cout<<"Исходный массив = ";
	for (int i = 0; i<n; i++)
	{
		arr[i]=7-(rand()%10);
		cout<<" "<<arr[i];
	}
	// вывод
	cout<<endl;
	cout<<"Номер минимального элемента по модулю = "<<search(arr)+1<<endl;
	cout<<"Сумма модулей элементов массива, расположенных после первого отрицательного элемента = "<<summod(arr)<<endl;
	cout<<"Введите предел a = ";	cin>>a;
	cout<<"Введите предел b = ";	cin>>b;
	compression(a,b,arr);
	cout<<endl;
	cin.get();
	return 0;
}
сейчас сейчас,спасибо большое за помощь,очень помогли
anton6262906 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с одномерным массивом TvYown Помощь студентам 0 23.12.2010 20:52
Работа с одномерным массивом TvYown Общие вопросы C/C++ 2 23.12.2010 17:29
Работа с одномерным массивом в СИ++ glagoff Помощь студентам 6 31.10.2010 21:02
работа с одномерным массивом _Solomon_ Помощь студентам 1 07.06.2007 12:06