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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ириска5
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 40
#1

структуры вопрос - C++

13.05.2011, 20:44. Просмотров 544. Ответов 12
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <cmath>
using namespace std;
 
struct point
{
    double x,y,z;
};
 
double dlina(point a,point b)
{
    return sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2)+pow(a.z-b.z,2));
}
double triangle(double d,double e,double f,double p,double max)
{
    if ((d+e>f) && (d+f>e) && (f+e>d))
        max=1;
    else max=0;
            
    return max;
}
 
int main()
{
    point a[10];
    double d,e,f,p,max,t=0;
    int n;
    cout<<"введ колич точек"<<endl;
    cin>>n;
    for(int i=1;i<=n;++i)
    {
        cout<<"введите координаты"<<endl;
        cin>>a[i].x>>a[i].y>>a[i].z;
    }
    {for(int i=1;i<=n-2;++i)
        for(int j=i+1;j<=n-1;++j)
            for(int k=j+1;k<=n;++k)
            {
                d=dlina(a[i],a[j]);
                e=dlina(a[j],a[k]);
                f=dlina(a[k],a[i]);
                p=d+e+f;
                triangle(d,e,f,p,max);
                if ((max==1) && (p>t))
                    t=p;
                
 
            }}
    cout<<"max="<<t;
    return 0;
}

подскажите пжл что в проге не так,просто мне мой максимум печатает все время равный нулю,как будто не сравнивает - (p>t) -
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2011, 20:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос структуры вопрос (C++):

Небольшой вопрос по заполнению структуры - C++
В первой строке ошибка, пропущена точка с запятой.. Поправте, как правильно заполнить Zapravki_AZS.AZS = {{ &quot;Lukoil&quot;; ...

Вопрос. Чем отличаются структуры в С++ от классов в C++ - C++
Приветствую. Никак не могу понять чем же все таки отличаются структуры от классов, кроме того что в структуре по умолчанию все члены...

Помещение структуры в вектор, удаление структуры, изменение элементов структуры - C++
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный элемент структуры. 2 - удалять...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё. - C++
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...

Функция внутри структуры использует указатель, как поле этой структуры - C++
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp, есть файл GlobalItems.h, где хранятся глобальные...

Структуры, массивы структур (как можно присваивать(инициализировать) значения полям структуры) - C++
Есть у меня вот такая структура, например struct Subject { int cost; int Volume; }; Потом создаю экземпляр, Subject G; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.05.2011, 20:49 #2
а так?
C++
1
if (max == 1.0 && p > t)
0
skaa
Хочу в Исландию
1029 / 828 / 75
Регистрация: 10.11.2010
Сообщений: 1,626
13.05.2011, 20:52 #3
В функции
C++
1
double triangle(double d,double e,double f,double p,double max)
как я понял параметру max присваивается значение которое будет использоваться после обращения к функции. Если мы хотим этого, то надо так:
C++
1
2
3
4
5
6
double triangle(double d,double e,double f,double p,double *pmax)
{
  ...
  *pmax=3.14;
  ...
}
, а обращаться так:
C++
1
2
3
double max;
...
triangle(d,e,f,p,&max);
.
1
Ириска5
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 40
13.05.2011, 21:03  [ТС] #4
Добавлено через 2 минуты
skaa, а в функции triangle нужно писать return *max ?
0
skaa
Хочу в Исландию
1029 / 828 / 75
Регистрация: 10.11.2010
Сообщений: 1,626
13.05.2011, 22:45 #5
Извините, не заметил что функция возвращает max... Но в таком случае параметр max вообще не нужен, а обращение к ней должно быть такое:
C++
1
max=triangle(d,e,f,p);
.

Добавлено через 7 минут
А что надо найти, треугольник с максимальным периметром?
0
Ириска5
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 40
13.05.2011, 22:57  [ТС] #6
да, с максимальным периметром,но я не понимаю почему тогда max не нужен, что мне тогда должна возвращать функция?
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
13.05.2011, 23:02 #7
Цитата Сообщение от Ириска5 Посмотреть сообщение
да, с максимальным периметром,но я не понимаю почему тогда max не нужен, что мне тогда должна возвращать функция?
Зачем ей что-то возвращать, если то, что она возвращает вы не читаете?
0
Ириска5
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 40
13.05.2011, 23:04  [ТС] #8
gooseim, но мне необходимо проверить то условие которое содержится в вспомогат фунции и если оно верное то считать дальше
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
13.05.2011, 23:07 #9
Цитата Сообщение от Ириска5 Посмотреть сообщение
triangle(d,e,f,p,max); if ((max==1) && (p>t)) t=p;
max у вас как был неинициализирован, так им и остался, потому что вы ему ничего не присваиваете.

Добавлено через 1 минуту
напишите так и все должно сработать:
C++
1
double triangle(double d,double e,double f,double p,double &max)
0
Ириска5
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 40
13.05.2011, 23:08  [ТС] #10
Цитата Сообщение от gooseim Посмотреть сообщение
max у вас как был неинициализирован, так им и остался, потому что вы ему ничего не присваиваете.
ну а если я сделаю так:

double triangle(double d,double e,double f,double p,double *max)
{
if ((d+e>f) && (d+f>e) && (f+e>d))
*max=1;
else *max=0;

return *max;
}
...
triangle(d,e,f,p,&max);


так мне он считает все верно,но так можно вообще делать?
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
13.05.2011, 23:12 #11
Цитата Сообщение от Ириска5 Посмотреть сообщение
так мне он считает все верно,но так можно вообще делать?
Так правильно и делать можно, но мне больше нравится по ссылке, как я показывал. Тогда меньше кода переписывать.

Добавлено через 1 минуту
Только у вас получается дублирование выходной информации. У вас значение возвращается через return, еще в параметре. Зачем такое дублирование?
1
Ириска5
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 40
14.05.2011, 00:32  [ТС] #12
gooseim, спасибо я проверила,все работает,спасибо

Добавлено через 1 час 15 минут
gooseim, не могли бы вы мне как опытный пользователь помочь еще в одной задаче?

Добавлено через 4 минуты
задача-Получить все меньшие 100 натуральные числа,которые являются палиндромами как в десятичной,так и в двоичной системах. - Вот сделала задачу,но она неправильно работает и я уже в ней сама запуталась.Полиндром это например-404 (в десятичной системе) или 100001 (в двоичной системе). я беру все числа до 100 и делю их на 2 а каждый остаток записываю в элемент массива, чтобы потом сравнить там значения. Помогите пжл исправить задачу.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
using namespace std;
int i,j;
void dvoy(int c,int b,int *d,int n,int k)
{
    for(k=1;k<=100;++k)
    if(i!=0)
    {
        c=i%2;
        i=i/2;
        d[j]=c;
        cout<<"d["<<j<<"]="<<d[j]<<endl;
        ++j;
        n=j-1;
 
 
    }
 
 
}
 
int main()
{
    int c,b,n,k,a=0;
    int *d=new int[n];
    for(i=10;i<=100;++i)
    {
        dvoy(c,b,d,n,k);
    for(j=1;j<=n;++j)
        {
            if (d[j]==d[n-j]);
            a+=1;
        }
    cout<<"a="<<a<<endl;
    delete []d;
    if (a==n/2)
    cout<<"i="<<i<<endl;
    }
    return 0;
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
asics
Freelance
Эксперт С++
2847 / 1784 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
14.05.2011, 00:58 #13
Цитата Сообщение от Ириска5 Посмотреть сообщение
Получить все меньшие 100 натуральные числа,которые являются палиндромами как в десятичной,так и в двоичной системах
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
 
std::string int_to_str(int one, std::string r = ""){
  std::ostringstream ost;
  ost << one;
  r = ost.str();
  return r;
}
 
std::string dec_to_bin(int one){
  std::string res;
  while(one){
    std::string first;
    res += int_to_str(one % 2, first);
    one /= 2;
  }
  std::reverse(res.begin(), res.end());
  return res;
}
 
bool is_pal(std::string _s){
  return std::equal(_s.begin(), _s.end(), _s.rbegin());
}
 
int main(){
  for(int i = 0; i <= 100; ++i)
    if( is_pal(int_to_str(i)) && is_pal(dec_to_bin(i)) )
      std::cout << i << '\n';
  return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2011, 00:58
Привет! Вот еще темы с ответами:

Вывод структуры, строка как элемент структуры - C++
Описать структуру с именем TRAIN, содержащую следующие поля: □ название пункта назначения; □ номер поезда; □ время отправления. ...

Исследование структуры FILE или: что вообще можно выудить из этой структуры, указатель на которую мы получаем при открытии файла? - C++
Ничего нельзя. Итак, новичкам напомню, что после выполнения кода FILE* f= fopen (&quot;file.txt&quot;, &quot;w&quot;); в переменной f содержится...

Оператор if и структуры. Возвращение структуры из функции - C++
Здравствуйте, имеется такая вот функция. void InputStructEmployee (int StructSize) { StructEmployee UsrStruct; string...

Структуры. Вызов данных структуры по указателю. с++ - C++
Условие задачи: Помогите, пожалуйста, с как реализовать печать вообще не представляю.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.05.2011, 00:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru