Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 2

Не определяется глобальная переменная внутри функции

01.06.2017, 16:40. Показов 1170. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Передо мной стоит задача:
Задано множество точек М в трехмерном пространстве. Найти такую из них, что шар заданного радиуса с центром в этой точке содержит максимальное число точек из М.
Математически я понимаю как это дело реализовать функциями с использованием массивов структур, но VS 2010 Express совсем не хочет слушать меня. Вначале R, при задании с клавиатуры, даже не определялся, до того момента, как во вводе с клавиатуры поставил тип lf(для переменной double, чтоо?). Теперь же это значение не уходит в функцию, соответственно, нужный результат программа не выдает.
Ну и соответственно не претендую на уникальность и идеальность решения, но хотел бы реализовать его в таком виде, для завершения которого, на мой взгляд, не хватает чутьчуть. Любые другие замечания приветствуются, знания лишними не бывают
Код прикрепляю ниже. Пожалуйста, помогите заставить ф-ю видеть переменную. Заранее огромное спасибо!
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include "stdafx.h"
#include <iostream>
#include "math.h"
    const int N=5;
    int ans, point;
    double R;
        
    struct TPoint { //задание структуры
    double x, y, z;
    };
 
    struct TPoint PS[N]={{0,5,0},{0,2,3},{1,1,2},{4,2,4},{2,4,3}}; //задание массива структур
    double Dist(TPoint a, TPoint b); //функция вычисления длины между точками
    double schet(double Dist(TPoint a,TPoint b),double R); //функция нахождения максимального количества точек для каждой точки
 
int main() {
    
    printf("Enter R=\n");
    scanf("%lf",&R);
    ans=schet(Dist,R);
    if (ans==10) printf("Max 4islo to4ek - 0, to4ki nahodyatsya slishkom daleko\n");
    else    printf("%i %i %i\n", &PS[ans].x,&PS[ans].y,&PS[ans].z);
    system("pause");
}
    
    double Dist(TPoint a, TPoint b){ //функция нахождения расстояния между точками
        double lenght;
        lenght=sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z));
        return lenght;
        }
 
    double schet(double Dist(TPoint a,TPoint b),double R) {
    int j,max, point ;
    double i,k0,k1,k2,k3,k4;
    double  d,d1,d2,d3,d4;
 
    i=0;
    max=0;
    point=10;
    k0=0;
    k1=0;
    k2=0;
    k3=0;
    k4=0;
    for (j=0;j<=N;j++){
    d=Dist(PS[0],PS[j]); //вызов функции нахождения раcстояния
    if ((d<R) && (d!=0)) { 
        k0++;               //k - количество точек попадающих в радиус  
    }
    if (k0>max) {
        max=k0;
        point=0;
        }   
    }
    for (j=0;j<=N;j++){
    d1=Dist(PS[1],PS[j]); //вызов функции нахождения раcстояния
    if ((d1<R) && (d!=0)) { 
        k1++;               //k - количество точек попадающих в радиус
        if (k1>max) {
            max=k1;
            point=1;
        }   
    }
    }
    for (j=0;j<=N;j++){
    d2=Dist(PS[2],PS[j]); //вызов функции нахождения расcтояния
    if ((d2<R) && (d!=0)) { 
        k2++;               //k - количество точек попадающих в радиус
        if (k2>max) {
            max=k2;
            point=2;
        }   
    }
    }
    for (j=0;j<=N;j++){
    d3=Dist(PS[3],PS[j]); //вызов функции нахождения расcтояния
    if ((d3<R) && (d!=0)) { 
        k3++;               //k - количество точек попадающих в радиус
        if (k3>max) {
            max=k3;
            point=3;
        }   
    }
    }
    for (j=0;j<=N;j++){
    d4=Dist(PS[4],PS[j]); //вызов функции нахождения раcстояния
    if ((d4<R) && (d!=0)) { 
        k4++;               //k - количество точек попадающих в радиус
        if (k4>max) {
            max=k4;
            point=4;
        }   
    }
    }
    return point;
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2017, 16:40
Ответы с готовыми решениями:

Глобальная переменная после вызова функции меняет значение
До flag = 0; odnorod_pril(buffer1); После int odnorod_pril(char *buffer) { flag точно равен 1, проверял в памяти и просто...

Глобальная переменная в функции
Вот пример кода из книги var scope = &quot;global&quot;; function f(){ console.log(scope); //Выведет &quot;undefined&quot;, а не &quot;global&quot; ...

Глобальная переменная вне функции
Такой незамысловатый код. По идее переменная $k - глобальная, и функция должна её видеть. На деле этого не происходит. static - не в...

3
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
01.06.2017, 20:44
Цитата Сообщение от omeenz Посмотреть сообщение
Пожалуйста, помогите заставить ф-ю видеть переменную.
В какой функции, какую переменную?
1
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 2
01.06.2017, 20:47  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
В какой функции, какую переменную?
в функции schet не определяется переменная R.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
01.06.2017, 20:51
Цитата Сообщение от omeenz Посмотреть сообщение
C
1
2
printf("Enter R=\n");
scanf("%lf",&R);
Ты на С++ пишешь, или как?
C++
1
2
cout << "Enter R=\n";
cin >> R;
Добавлено через 1 минуту
Цитата Сообщение от omeenz Посмотреть сообщение
в функции schet не определяется переменная R.
Что значит: "не определяется"? Как это выглядит? Если тебе в функции нужна глобальная переменная R, то не нужно туда передавать double R. Глобальная переменная и так там видна.

Добавлено через 3 минуты
C++
1
double schet(double Dist(TPoint a,TPoint b));
C++
1
ans=schet(Dist);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.06.2017, 20:51
Помогаю со студенческими работами здесь

Глобальная переменная для функции
Здравствуйте. Битый час мучаюсь, ерунда какая-то. Мне нужно функцию задать как глобальную переменную.a, b, c - введенные мною числа...

Глобальная переменная не видна в функции
Может я что не так делаю, но $DOCUMENT_ROOT не видна в функции... если в строке $d=opendir('$DOCUMENT_ROOT/gallery/$dir'); вместо ...

Почему глобальная переменная не изменяется из функции?
Здравствуйте! Делаю такую программу. Сначала создаю анимацию - увеличение размеров контейнера. Затем, когда он становится нужного...

Глобальная переменная в качестве аргумента функции
Доброго времени суток! :) Есть вопрос: пишу function внутри php файла, т.е. что-то типа такого: &lt;?php ... function xz() { }...

Не изменяется глобальная переменная при выходе из функции
Здравствуйте, никак не могу понять, почему глобальная переменная-счетчик меняется в функции Create(вижу в конструкторе), но во время...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip . . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru