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

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

Войти
Регистрация
Восстановить пароль
 
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
#1

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

16.10.2012, 16:40. Просмотров 583. Ответов 13
Метки нет (Все метки)

Не работает функция определяющая находится точка в шаре или нет


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();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2012, 16:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структура (C++):

В текстовом файле структура – информация о компьютерах. Структура с полями: название, стоимость. - C++
Ребят, помогите пожалуйста, 29 июня экзамен по &quot;Основы программирования&quot;,кто сколько сможет сделать задач, тем всей группой поставим &quot;+&quot;...

Структура «База», сущности «Универсам» и «Продукты», структура «Товар» - C++
1. Создать структуру «База», включающую не менее 3 полей. 2. Создать сущности «Универсам» и «Продукты» описанной структуры. 3. Создать...

Структура DateTime, битовая структура - C++
Условие: Структура содержит информацию о дате и времени некоторого события: struct datetime { unsigned short Year; // год ...

Структура, доступная из всех файлов проекта ("глобальная" структура) - C++
Есть четыре структуры (body, gun, enemy, st), описанные в main.cpp. К main.cpp подключен хедер save.h, в котором имеется функция void...

Структура - C++
Написать программу записи к файлу элементов типа структура для реестрации автомобилей с полями: Марка автомобиля, год выпуска, цвет,...

Структура - C++
typedef struct strs { char c; strs *next; int inset; }xx; Ошибка при компиляции:

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
16.10.2012, 16:42 #2
параметр %d в scanf значит, что считывается целое, а не дробное число

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

в строке Rastoianie (tochka *t1,shar *t2);
0
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
16.10.2012, 17:15 #6
C++
1
Rastoianie (&tochka, &shar);
и еще нужно инициализировать tochka и shar, у вас будет инициализированны глобальные переменный t и s
1
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
16.10.2012, 17:17  [ТС] #7
огромное спасибо, все заработало!!!
0
Croessmah
Эксперт CЭксперт С++
13227 / 7499 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 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();
}
1
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
16.10.2012, 17:35  [ТС] #9
он почему выводит только "точка в шаре",
а "точка вне шара" нет

мне кажется ошибка в операторе if
0
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
16.10.2012, 17:54 #10
В if все правильно. Если вы не изменили функции tochasuper и sharsuper, то изменяться будут только глобальные переменные t и s.
0
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
16.10.2012, 17:59  [ТС] #11
а как теперь быть ?
я эту программу переработал из другой программы, там выводит сообщение "точка вне шара"
в этой программе нет
если нужно могу выложить код
0
Croessmah
Эксперт CЭксперт С++
13227 / 7499 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 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();
}
1
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
16.10.2012, 18:22  [ТС] #13
код рабочий, спасибо большое!
0
Croessmah
Эксперт CЭксперт С++
13227 / 7499 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 1
16.10.2012, 18:29 #14
Цитата Сообщение от dobby Посмотреть сообщение
код рабочий, спасибо большое!
Я в коде поменял тип данных на float. Если нужен double, то поменяйте везде формат строки в scanf_s с "%f" на "%lf
Собственно в этом и была ошибка. Формат "%f%f%f" предполагает, что будут передаваться аргументы типа float, а формат "%lf%lf%lf" предполагает тип double.

Да и глобальные переменные - это зло, ИМХО =)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2012, 18:29
Привет! Вот еще темы с ответами:

структура с++ - C++
Скажите, пожалуйста, в чем ошибка. почему не считает средний бал, фамилии, классы? #include &lt;iostream.h&gt; #include &lt;stdio.h&gt; ...

Структура в С++ - C++
Добрый день всем! Вот моё задание: Известны фамилии 25 человек, их семейное положение: женат (замужем) или нет, и сведения о наличии...

Структура - C++
С клавиатуры вводятся слова, некоторые из них повторяются. Записать их в массив структур, в котором слова не повторяются. Каждая структура...

Структура - C++
Я не давно начал изучать C++, сам пробовал, мало что получилось. Условие задачи: Дана следующая информация о книгах библиотеки: автор,...


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

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

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