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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2015, 13:48   #1
Lampampam
 
Регистрация: 23.11.2015
Сообщений: 4
По умолчанию как разделить на функции

Добрый день. опять к вам за советом
Задача
Написать пользовательскую функцию, решающую указанную ниже задачу. Массив создается в динамической области памяти функцией new. При обращении к элементам массива воспользоваться взаимосвязью массивов с указателями (косвенная адресация). Предусмотреть реакцию программы на ситуации, при которых задача не имеет решения.
В одномерном массиве, состоящем из n вводимых с клавиатуры элементов, вычислить: Сумму модулей элементов массива, расположенных после минимального по модулю элемента;

Решила задачу, все работает. Но не приняли работу, так как надо выделить в отдельные функции, что бы было меньше кода, и красивее.

объясните хоть на одном примере как это делать, а то при выделении функций у меня сбивается программа


Код:
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <locale.h>
#include <process.h>
#include <malloc.h>

void main() 
{
	double *a, min,sum=0;
	int n,k,m=0;
	setlocale(LC_CTYPE,"Russian");
	system("cls");
	fflush(stdin);
	puts("Введите длину массива:");
	scanf_s("%d",&n);
	a= new double[n];
	if (a==NULL)
	{ puts("Предел размерности.");
	}
	else
	{
	for (k=0;k<n;k++)   //ввод элементов
	{
		printf("\nВведите значение a[%d]:",k);
		scanf_s("%lf",a+k);
	}
	min=*a;
	for (k=0;k<n;k++) // нахождение минимального элемента
	{
		if (*(a+k)<min)	
		{
			min=*(a+k);
			m=k;
		}
	}
	for (k=m+1;k<n;k++) //нахождение суммы
	{
		sum+=fabs(*(a+k));
	}
	printf("\nРезультат: %.2lf",sum);
	delete a;
	}
	_getch();
	
}
Мой вариант, я так понимаю что
1 функция Ввода массива
Код:
void in (int a, n)
int  k
	for (k=0;k<n;k++)   //ввод элементов
	{
		printf("\nВведите значение a[%d]:",k);
		scanf_s("%lf",a+k);}
2 нахождение минимума
Код:
double min
{
min=*a;
	for (k=0;k<n;k++) // нахождение минимального элемента
	{
		if (*(a+k)<min)	
		{
			min=*(a+k);
			m=k;
		}
	}
}

3 нахождение суммы
????

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

Цитата:
Сумму модулей элементов массива, расположенных после минимального по модулю элемента;
Код:
double sum(double amin){
 int i;
 double s=0;
 for(i=0;i<n && a[i]!=amin;i++);
 for(++i;i<n;i++) s+=a[i];
 return s;
}
Годится идея?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.11.2015, 14:38   #3
Lampampam
 
Регистрация: 23.11.2015
Сообщений: 4
По умолчанию

да, спасибо
Lampampam вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разделить стерео на 2 моно ? hatecows C# (си шарп) 1 03.06.2011 14:23
Как разделить текст в Word? almazenok Общие вопросы Delphi 5 15.02.2011 15:45
как разделить число xxxNeXxxx Помощь студентам 6 21.10.2009 21:16
как разделить строку даты student90 Общие вопросы Delphi 16 07.11.2008 10:01
как разделить текст на переменные GAGARIN-NEW Общие вопросы Delphi 2 07.10.2007 15:24