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

Структура - C++

Восстановить пароль Регистрация
 
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
16.10.2012, 16:40     Структура #1
Не работает функция определяющая находится точка в шаре или нет


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
52
53
54
55
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <locale.h>
struct tochka 
{
 double x;
 double y;
 double z;
}t;
 
struct shar 
{
    struct tochka centr;
    double r;
}s;
 void tochasuper(void)
 {
  printf("Введите координаты Точки (x, y, z): ");
  scanf_s("%d%d%d",&t.x,&t.y,&t.z);
 
 }
 
void sharsuper(void)
{
    printf("Введите координаты центра шара (x, y, z):");
    scanf_s(" %d%d%d", &s.centr.x,&s.centr.y,&s.centr.z);
 
    printf("Введите радиус шара:");
    scanf_s("%d",&s.r);
}
 
void Rastoianie(struct tochka *t1,struct shar *t2)
{
    double formula;
    formula=sqrt(pow(t2->centr.x-t1->x, 2)+pow(t2->centr.y-t1->y, 2)+pow(t2->centr.z-t1->z, 2));
 
    if (formula <= s.r)
    printf("Точка в шаре.");
    else    
    printf("Точка вне шара.");
}
 
int main()
{
   setlocale(LC_ALL,"rus");
   struct tochka;
   struct shar; 
   tochasuper();
   sharsuper();
   void Rastoianie (tochka *t1,shar *t2);
   _getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2012, 16:40     Структура
Посмотрите здесь:

структура C++
Структура. C++
C++ Структура
C++ Структура в с++
C++ Структура, доступная из всех файлов проекта ("глобальная" структура)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
16.10.2012, 16:42     Структура #2
параметр %d в scanf значит, что считывается целое, а не дробное число

На каких данных не работает?
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
16.10.2012, 16:45  [ТС]     Структура #3
то есть вместо %d надо %f ?
не запускает функцию void Rastoianie(struct tochka *t1,struct shar *t2)
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 22.09.2012
Сообщений: 283
16.10.2012, 17:09     Структура #4
при вызове функции void не нужен
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
16.10.2012, 17:12  [ТС]     Структура #5
тогда у меня выскакивает ошибка
tochka: недопустимое использование этого типа в качестве выражения
shar: недопустимое использование этого типа в качестве выражения

в строке Rastoianie (tochka *t1,shar *t2);
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 22.09.2012
Сообщений: 283
16.10.2012, 17:15     Структура #6
C++
1
Rastoianie (&tochka, &shar);
и еще нужно инициализировать tochka и shar, у вас будет инициализированны глобальные переменный t и s
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
16.10.2012, 17:17  [ТС]     Структура #7
огромное спасибо, все заработало!!!
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11835 / 6814 / 769
Регистрация: 27.09.2012
Сообщений: 16,889
Записей в блоге: 2
Завершенные тесты: 1
16.10.2012, 17:18     Структура #8
Цитата Сообщение от dobby Посмотреть сообщение
тогда у меня выскакивает ошибка
tochka: недопустимое использование этого типа в качестве выражения
shar: недопустимое использование этого типа в качестве выражения
в строке Rastoianie (tochka *t1,shar *t2);
Вы не создали объекты типа tochka и shar

C++
1
2
3
4
5
6
7
8
9
10
int main()
{
   setlocale(LC_ALL,"rus");
   tochka point;
   shar sphere; 
   tochasuper();
   sharsuper();
   Rastoianie (&point,&sphere);
   _getch();
}
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
16.10.2012, 17:35  [ТС]     Структура #9
он почему выводит только "точка в шаре",
а "точка вне шара" нет

мне кажется ошибка в операторе if
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 22.09.2012
Сообщений: 283
16.10.2012, 17:54     Структура #10
В if все правильно. Если вы не изменили функции tochasuper и sharsuper, то изменяться будут только глобальные переменные t и s.
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
16.10.2012, 17:59  [ТС]     Структура #11
а как теперь быть ?
я эту программу переработал из другой программы, там выводит сообщение "точка вне шара"
в этой программе нет
если нужно могу выложить код
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11835 / 6814 / 769
Регистрация: 27.09.2012
Сообщений: 16,889
Записей в блоге: 2
Завершенные тесты: 1
16.10.2012, 18:19     Структура #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
52
53
54
55
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <locale.h>
struct tochka 
{
 float x;//тип данных float
 float y;//тип данных float
 float z;//тип данных float
};//Убрал глобальную переменную t
 
struct shar 
{
    tochka centr;//Убрал слово struct
    float r;//тип данных float
};//Убрал глобальную переменную s
 void tochasuper(tochka * t)//Передаем указатель на точку (само собой синтаксис с "." изменился на "->")
 {
  printf("Введите координаты Точки (x, y, z): ");
  scanf_s("%f%f%f",&t->x,&t->y,&t->z);//Формат строки "%f%f%f"
 
 }
 
void sharsuper(shar * s)//Указатель на шар (само собой синтаксис с "." изменился на "->")
{
     printf("Введите координаты центра шара (x, y, z):");
    scanf_s("%f%f%f", &s->centr.x,&s->centr.y,&s->centr.z);//Формат строки "%f%f%f"
 
    printf("Введите радиус шара:");
    scanf_s("%f",&s->r);//Формат строки "%f"
}
 
void Rastoianie(tochka *t1,shar *t2)//просто tochka * t1, shar *t2  здесь не нужно слово struct
{
    double formula;
    formula=sqrt(pow(t2->centr.x-t1->x, 2)+pow(t2->centr.y-t1->y, 2)+pow(t2->centr.z-t1->z, 2));
 
    if (formula <= t2->r)//Вместо s.r
        printf("Точка в шаре.");
    else    
        printf("Точка вне шара.");
}
 
int main()
{
   setlocale(LC_ALL,"rus");
   tochka point;
   shar sphere; 
   tochasuper(&point);//Передаем указатель на точку
   sharsuper(&sphere);//Передаем указатель на шар
   Rastoianie (&point,&sphere);//Передаем в функцию указатели на точку и на шар
   _getch();
}
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
16.10.2012, 18:22  [ТС]     Структура #13
код рабочий, спасибо большое!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2012, 18:29     Структура
Еще ссылки по теме:

C++ В текстовом файле структура – информация о компьютерах. Структура с полями: название, стоимость.
C++ Структура DateTime, битовая структура
C++ Структура «База», сущности «Универсам» и «Продукты», структура «Товар»

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11835 / 6814 / 769
Регистрация: 27.09.2012
Сообщений: 16,889
Записей в блоге: 2
Завершенные тесты: 1
16.10.2012, 18:29     Структура #14
Цитата Сообщение от dobby Посмотреть сообщение
код рабочий, спасибо большое!
Я в коде поменял тип данных на float. Если нужен double, то поменяйте везде формат строки в scanf_s с "%f" на "%lf
Собственно в этом и была ошибка. Формат "%f%f%f" предполагает, что будут передаваться аргументы типа float, а формат "%lf%lf%lf" предполагает тип double.

Да и глобальные переменные - это зло, ИМХО =)
Yandex
Объявления
16.10.2012, 18:29     Структура
Ответ Создать тему
Опции темы

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