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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2011, 00:51   #1
vrtp
Пользователь
 
Регистрация: 11.10.2011
Сообщений: 33
По умолчанию функции

Привет всем. Имеется такая задача:
Код:
//правильная призма, высота h, основание  квадрат аб все вводим ручками.
//2) Пусть параметры призмы h и a – целые числа, лежащие в диапазоне [с;b]. Среди всех возможных призм с такими параметрами, используя составленные функции, найти призму, у которой значение отношения V/S ближе к единице, чем у остальных. 
#include<stdlib.h>
#include<stdio.h>
squ(int a, int h);
ob(int a, int h);
main(void)
{

}
squ(int a, int h)
{

}
ob(int a, int h)
{

}
Здесь я накинул скелет программы, вот только не могу понять как сделать, так, чтобы ближе к 1. Ну чтобы к функция была минимальна можно через частные производные, а как к 1, пока не соображу
vrtp вне форума Ответить с цитированием
Старый 17.11.2011, 18:07   #2
-=ЮрА=-
C/C++ advanced
Пользователь
 
Аватар для -=ЮрА=-
 
Регистрация: 17.11.2011
Сообщений: 17
По умолчанию

Цитата:
Сообщение от vrtp Посмотреть сообщение
Привет всем. Имеется такая задача: [CODE]//правильная призма, высота h, основание квадрат аб все вводим ручками.
//2) Пусть параметры призмы h и a – целые числа, лежащие в диапазоне [с;b]. Среди всех возможных призм с такими параметрами, используя составленные функции, найти призму, у которой значение отношения V/S ближе к единице, чем у остальных.
Здесь я накинул скелет программы, вот только не могу понять как сделать, так, чтобы ближе к 1. Ну чтобы к функция была минимальна можно через частные производные, а как к 1, пока не соображу
Вот код на Си + скрин работы
Код:
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int a,h,c,d,S,V;
	printf("\tEnter diapazone [c;d]\n");
	printf("c = ");scanf("%d",&c);
	printf("d = ");scanf("%d",&d);
	int amax, hmax;//Оптимальные основание и высота
	double K, Kmax = 0.0;
	for(a = c; a <= d; a++)
	for(h = c; h <= d; h++)
	{
		//Находим площадь боковой поверхности
		//S = 2*a*a + 4*a*h;
		S = 2*a*(a + 2*h);
		V = a*a*h;//Находим объём призмы
		K = V/(1.0*S);//1.0* нужно для неявного преобразования к double
		if(0 < K && K <= 1.0)
		if(Kmax < K)
		{
			Kmax = K;
			amax = a;
			hmax = h;
		}
	}
	printf("\tOptimal a and h\n");
	printf("a = %d\n",amax);
	printf("h = %d\n",hmax);
	printf("S = %d\n",2*amax*(amax + 2*hmax));
	printf("V = %d\n",amax*amax*hmax);
	printf("V/S = %.lf\n",Kmax);
	system("pause");//Стоп-точка в программе
	return 0;
}
Изображения
Тип файла: jpg ScrnShot.JPG (11.4 Кб, 50 просмотров)
За "хлеб и воду" не работаю
-=ЮрА=- вне форума Ответить с цитированием
Старый 17.11.2011, 19:07   #3
vrtp
Пользователь
 
Регистрация: 11.10.2011
Сообщений: 33
По умолчанию

Спасибо большое! Но здесь оказалось все гораздо хитрее, я хочу получить наиболее точное приближение с классом точности, например, 0,001, я так понял такую точность даст мне только метод Ньютона или можно как-то иначе?
vrtp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача функции другой функции как аргумента C # stopanko C# (си шарп) 2 20.11.2011 13:13
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets dmitrii6120 Помощь студентам 6 14.11.2011 20:10
Мини бэйсик:объявление функции, вызов функции , возврат. AL_LORD Помощь студентам 2 14.10.2010 17:48
Программа на СИ++, используя функции работы с файлами и функции <string.h> Аня Popova Фриланс 9 13.09.2010 15:52
Чем отличается описание функции от определения функции в С++? Go6a Помощь студентам 4 18.07.2009 18:07