Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Объём игрушки


Автор: Гость_Илья 13.1.2006, 22:09
Определить объём симметричной игрушки состоящей из N дисков, нанизанных в порядке убывания их внешнего диаметра на колышек радиуса R, объём которого зада. Внешний диаметр диска определяется выражением D=2R+KH, где H-толщина диска(для всех одинакова), K-номер диска, считая от верхнего. Зазором между диском и колышком пренебречь.

з.ы.
Заранее спасибо. Через 4 дня экзамен. Если буду программировать все сутки, смогу сдать
Код



Автор: Guest 14.1.2006, 17:30
Код

#include <iostream.h>
#include <math.h>
#include <stdio.h>
void main()
{
    int N,R,H,D;
    cout << "Vvedite kolichestvo diskov";
    cin>>N;
    cout << "Vvedite radius kolyshka";
    cin>>R;
    cout << "Vvedite tolshinu diska";
    cin>>H;
    int *a = new int[N];
    

    
        [color=red]for(N=0;N==N;N++)
        {
            a[N]=2*R+N*H;
        }[/color]}



Вобщем неверный здесь цикл. Мне нужно провести n раз вычисление диаметра дисков и загнать их все в массив a[N].
Как это сделать правильно?

Автор: Bose 14.1.2006, 20:19
объём диска равен площади диска, помноженной на высоту.
площадь диска равняется площади круга с радиусом диска минус площадь круга с радиусом колышка.
площадь диска=((R диска)^2*Pi-(R колышка)^2*Pi)
обьём диска=((R диска)^2*Pi-(R колышка)^2*Pi)*(H диска)

уже забыл, как на Си функции наызваются, пишу то, что помню.
Код

int V;
V=0;
for (i=1;i<=N;i++)    
        {    
            V=V+обьём диска;    // накапливаем суммарный обьём в переменной V
        }

Автор: ДобренькийПапаша 15.1.2006, 11:10
Это неправильно. Можете не решать до конца, помогите мне написать цикл, в котором мне нужно вычислить диаметры всех дисков и загнать в массив. Как это синтаксически выглядит?

Автор: ДобренькийПапаша 15.1.2006, 11:44
Код


#include <math.h>
#include <stdlib.h>
#include <stdio.h>

void main()
{
int N,R,H,K;
cout << "Vvedite kolichestvo diskov=";
cin>>N;
cout << "Vvedite radius kolyshka=";
cin>>R;
cout << "Vvedite tolshinu diska=";
cin>>H;
int i=N;
int *a=new int[i];
for (K=1,i=0;i<N,K<N+1;i++,K++)
{
 a[i]=2*R+K*H;
 cout<<a[i];
 getchar();
}
getchar();

}

Чё здесь в цикле неправильно?

Автор: Бегемот 15.1.2006, 17:46
ДобренькийПапаша, для чего тебе загонять диаметры дисков в массив??? Условие задачи этого не требует! Вот так вот устроит?!
Код

#include<stdio.h>
#include<conio.h>
#include<math.h>
int ColDisk;
float RadiusCol;
float HightDisk;
float DiametrDisk;
float VDisk;
float VCol;
float VResult;

void main()
{
   printf("Введите количество дисков :\t\t");
   scanf("%i", &ColDisk);
   printf("Введите толщину диска :\t\t\t");
   scanf("%f", &HightDisk);
   printf("Введите радиус колышка :\t\t");
   scanf("%f", &RadiusCol);

   for(int i=1; i<=ColDisk; i++)
   {
      DiametrDisk = 2 * RadiusCol + i * HightDisk;
      VDisk += M_PI * pow(DiametrDisk,2)/4 * HightDisk;
   }
   VCol = M_PI * pow(RadiusCol,2) * HightDisk * ColDisk;
   VResult = VDisk - VCol;
   printf("\n\nОбъём диска :\t\t\t\t%5.2f", VResult);
   getch();
}


Автор: ДобренькийПапаша 16.1.2006, 10:10
А зачем в 24-й строке мы делим на 4?
Добавлено @ 10:12
И разве нам нужно по такой формуле вычислять объём колышка? По-моему он по условию пользователем задаётся.

Автор: Бегемот 16.1.2006, 19:32
Цитата

А зачем в 24-й строке мы делим на 4?


В 24-ой строке считаем объём диска! Объём диска равен произведению площади диска на его высоту:
V = S * H
Площадь можно посчитать как через радиус диска:
S = pi * R^2
…так и через его диаметр:
S = pi * D^2 / 4
Нам дана формула для подсчёта диаметра, соответственно и площадь я вычислил через него!

Цитата

И разве нам нужно по такой формуле вычислять объём колышка? По-моему он по условию пользователем задаётся.


Ага! Я сначала-то подумал, что это баг в условии задачи, потому как пользователем задаётся радиус колышка, отсюда мы находим его площадь; задаётся высота диска и их количество, отсюда мы находим высоту колышка! Если мы ещё и объём колышка вводили , то необходимо было бы считать его в уме, основываясь на других исходных данных! А сейчас я чего подумал-то!!! Мы с тобой с какого перепугу-то начали вводить толщину диска с клавиатуры??? В условии задачи про это ничего не сказано! Вот так я думаю правильно!
Код

#include<stdio.h>
#include<conio.h>
#include<math.h>

int ColDisk;
float RadiusCol;
float HightDisk;
float HightCol;
float DiametrDisk;
float VDisk;
float VCol;

void main()
{
   printf("Введите количество дисков :\t\t");
   scanf("%i", &ColDisk);
   printf("Введите объём колышка :\t\t\t");
   scanf("%f", &VCol);
   printf("Введите радиус колышка :\t\t");
   scanf("%f", &RadiusCol);

   HightCol = VCol / (M_PI * pow(RadiusCol,2));
   HightDisk = HightCol / ColDisk;

   for(int i=1; i<=ColDisk; i++)
   {
      DiametrDisk = 2 * RadiusCol + i * HightDisk;
      VDisk += M_PI * pow(DiametrDisk,2)/4 * HightDisk;
   }
   VDisk -= VCol;
   printf("\n\nОбъём диска :\t\t\t\t%5.2f", VDisk);
   getch();
}



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)