Форум программистов, компьютерный форум CyberForum.ru

Нужно доработать или предложите свои варианты - C++

Восстановить пароль Регистрация
 
Анастасия Ан
0 / 0 / 0
Регистрация: 13.03.2012
Сообщений: 14
03.07.2012, 12:05     Нужно доработать или предложите свои варианты #1
Вывести таблицу значений для графика зависимости расстояния от водной поверхности до верхней тички плавающего на воде тела от плотности материала данного тела, если это шар диаметра А.


S - расстояние от водной поверхности до верхней тички плавающего на воде тела
p - плотность тела
По закону Архимеда, вес плавающего шара уравновешивается выталкивающей силой, равной весу вытесненной воды. Т.е.,
F архимеда = вес шара
исходя из этого равенства пришла к уравнению p=(A/2+S)*(A-S)^2*(2/A^3)

Вроде все мои рассуждения были правильные, но таблица значений противоречив всем законам физики.
Т.е. получается, что чем больше р, тем больше S.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include<clocale>
#include <math.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{  
    double A,S,p;
    setlocale(LC_ALL, "Russian");
    cout <<"Введите диаметр шара";
    cin>> A;
for(S=-10;S<10;S++)
{
  p=(A/2+S)*(A-S)^2*(2/A^3);
  cout<<"\n p="<<p<<endl;
  cout<<"\n S="<<S<<endl;
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
[NovicheK]
19 / 19 / 2
Регистрация: 09.03.2012
Сообщений: 91
03.07.2012, 12:09     Нужно доработать или предложите свои варианты #2
знак ^ d c++ это не степень
Возводи умножением, либо подключи math.h и используй функцию pow()
Анастасия Ан
0 / 0 / 0
Регистрация: 13.03.2012
Сообщений: 14
03.07.2012, 12:23  [ТС]     Нужно доработать или предложите свои варианты #3
А так можно?
p=(A/2+S)*(A-S)*(A-S)*(2/(A*A*A))
Vaiz
 Аватар для Vaiz
98 / 92 / 29
Регистрация: 01.07.2012
Сообщений: 268
Завершенные тесты: 1
03.07.2012, 12:29     Нужно доработать или предложите свои варианты #4
Цитата Сообщение от Анастасия Ан Посмотреть сообщение
А так можно?
p=(A/2+S)*(A-S)*(A-S)*(2/(A*A*A))
Можно
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
03.07.2012, 12:58     Нужно доработать или предложите свои варианты #5
По чему то выводит отрицательные значения p - плотности тела и S - расстояние от водной поверхности до верхней точки плавающего на воде тела????
Миниатюры
Нужно доработать или предложите свои варианты  
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
03.07.2012, 13:23     Нужно доработать или предложите свои варианты #6
Цитата Сообщение от isaak Посмотреть сообщение
По чему то выводит отрицательные значения p - плотности тела и S
потому что цикл не работает
Цитата Сообщение от Анастасия Ан Посмотреть сообщение
for(S=-10;S<10;S++)
{
p=(A/2+S)*(A-S)^2*(2/A^3);
cout<<"\n p="<<p<<endl;
cout<<"\n S="<<S<<endl;
return 0;
^^^^^^^^
}
на первом же проходе выходим из программы
вынеси
return 0; за цикл
C++
1
2
3
4
5
6
7
for(S=-10;S<10;S++)
{
  p=(A/2+S)*(A-S)^2*(2/A^3);
  cout<<"\n p="<<p<<endl;
  cout<<"\n S="<<S<<endl;
}
    return 0;
Добавлено через 4 минуты
вообще то логичней вычислять расстояние от плотности а не наоборот
т.е в цикле увеличиваем плотность от 0 до того значения пока расстояние будет меньше нуля (утонули)
Анастасия Ан
0 / 0 / 0
Регистрация: 13.03.2012
Сообщений: 14
03.07.2012, 13:26  [ТС]     Нужно доработать или предложите свои варианты #7
Значит все-таки формула неправильная.

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
вообще то логичней вычислять расстояние от плотности а не наоборот
т.е в цикле увеличиваем плотность от 0 до того значения пока расстояние будет меньше нуля (утонули)
Согласна, так логичнее. Но тогда нужно как-то выразить S из p=(A/2+S)*(A-S)*(A-S)*(2/(A*A*A))
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
03.07.2012, 15:22     Нужно доработать или предложите свои варианты #8
Цитата Сообщение от Анастасия Ан Посмотреть сообщение
Но тогда нужно как-то выразить S из p=(A/2+S)*(A-S)*(A-S)*(2/(A*A*A))
давай по шагам как пришла к этой формуле????
во первых я не вижу Пи
вес шара это объем шара на плотность материала
вес воды это объем погруженной части шара на плотность воды
они должны быть равны
чему равна плотность воды(или приняли за 1)
как считала объем сектора??
Анастасия Ан
0 / 0 / 0
Регистрация: 13.03.2012
Сообщений: 14
03.07.2012, 20:35  [ТС]     Нужно доработать или предложите свои варианты #9
пи сократилось
да, плотность воды приняла за 1
объем сегмента считала по формуле: пи*h2*(R-h/3)
где R – радиус шара, а h – высота шарового сегмента.
все получилось у меня.
всем спасибо.
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
04.07.2012, 14:02     Нужно доработать или предложите свои варианты #10
Вот выразил S - расстояние через p - плотность тела и А - диаметр шара:

S= sqrt(A^3(1 - p)/(3A-1)):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include<clocale>
#include <iostream>
using namespace std;
int main()
{  
    double A,S,p;
    setlocale(LC_ALL, "Russian");
    cout <<"Введите диаметр шара";
    cin>> A;
for(p > 0; p = 1; p++);
{
  S = pow((A*A*A*(1-p)/(3*A-1)), 0.5);
  cout<<"\n p="<<p<<endl;
  cout<<"\n S="<<S<<endl;
   }
system("pause");
 return 0;
}
Подскажите пожалуйста как правильно записать условие для p - плотности шара, она должна принимать значение от 0 до 1?????? Подскажите пожалуйста в чем ошибка заранее огромное спасибо!!!!!
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
04.07.2012, 14:08     Нужно доработать или предложите свои варианты #11
isaak, очевидно, что некоторый шаг плотности здесь необходим.

C++
1
2
3
#define step 0.05
//...
for (p=step; p<1; p+=step)
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
04.07.2012, 14:49     Нужно доработать или предложите свои варианты #12
Спасибо все работаетА шаг можно задавать любой? Не обязательно 0.05?

Добавлено через 38 минут
Подскажите пожалуйста как сделать для любого вещества у которого p может быть и меньше и больше 1???? Заранее огромное спасибо!!!!
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
04.07.2012, 16:04     Нужно доработать или предложите свои варианты #13
isaak, если p>1, то тело утонет. Смысла в подобном не вижу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2012, 16:25     Нужно доработать или предложите свои варианты
Еще ссылки по теме:

C++ Нужно не много доработать
предложите свой алгоритм решения C++
Иерархия классов: предложите примеры C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
04.07.2012, 16:25     Нужно доработать или предложите свои варианты #14
Спасибо понял.
Yandex
Объявления
04.07.2012, 16:25     Нужно доработать или предложите свои варианты
Ответ Создать тему
Опции темы

Текущее время: 12:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru