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

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

Войти
Регистрация
Восстановить пароль
 
KokosSPb
81 / 84 / 3
Регистрация: 03.02.2011
Сообщений: 468
#1

Создание функции с параметрами - C++

28.02.2012, 12:19. Просмотров 530. Ответов 7
Метки нет (Все метки)

Здравствуйте, есть код
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
#include "stdafx.h"
#include <windows.h>
#include <GL/glut.h>
#pragma comment(lib, "opengl32.lib") //сообщаем линковщику, что мы будет использовать библиотеки opengl32, glu32. 
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glut32.lib")
 
using namespace System;
 
void init(void){
    glClearColor(1.0,1.0,1.0,0.0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0,200.0,0.0,150.0);
}
 
void LineSegment(void){
    int l=2;
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0,0.0,0.0);
    glBegin(GL_LINE_STRIP);
    while(l<200){
        glVertex2i(l,100+rand()%10);
        l++;
    }
    glEnd();
    l++;
    glFlush();
}
 
 
int main(int argc,char** argv)//(array<System::String ^> ^args)
{   
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowPosition(50,100);
    glutInitWindowSize(400,300);
    glutCreateWindow("OpenGL окошко");
    init();
    glutDisplayFunc(LineSegment);
 
 
    glutMainLoop();
    return 0;
}
всё работает нормально, рисует мне рандомную кривую, всё гуд, но вот если я хочу сделать так - чтоб рисовалась прямая по тем координатам, которые я ввожу (по поводу ввода - другая тема будет создана).
По логике, мне нужно 2 параметра вводить, но переделать функцию следующим образом:
C++
1
2
3
4
5
6
7
8
9
10
11
void LineSegment(int yOld, int yNew){
    int l=50;
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0,0.0,0.0);
    glBegin(GL_LINE_STRIP);
        glVertex2i(l,yOld);
        l++;
        glVertex2i(l,yNew);
    glEnd();
    glFlush();
}
- не получается, пишет ошибку ввода параметров при её вызове.
Что делать?

MS VisualStudio2008
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2012, 12:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание функции с параметрами (C++):

Задачник Абрамян. Процедуры и функции. Функции с числовыми параметрами - C++
Описать функцию Even(K) логического типа, возвращающую TRUE, если целый параметр K является четным, и FALSE в противном случае. С ее...

Создание файла с параметрами из консоли - C++
Вообщем это должно работать, но не работает. В принципе работы программы разобраться очень просто, поэтому не объясняю. #include...

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

Создание массива через функцию с параметрами - C++
Помогите с заданием. в главной функции вызывается дополнительная с 2мя параметрами для массива. в доп. функции формируется массив. и потом...

Функции с параметрами - C++
Здравствуйте. Поясните, пожалуйста, про передачу параметров по указателю, ссылкам и значению. Непростая тема для меня, запутанная, сразу...

Функции с числовыми параметрами - C++
Функции с числовыми параметрами Proc19. Описать функцию RingS(R1,R2) вещественного типа, находящую площадь кольца, заключённого между...

7
zss
Модератор
Эксперт С++
6404 / 5970 / 1945
Регистрация: 18.12.2011
Сообщений: 15,399
Завершенные тесты: 1
28.02.2012, 12:38 #2
Так не получится, Вы не можете изменить вызов функции LineSegment.
Оставьте его прежним, а yOld и yNew передайте через глобальные переменные
1
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.02.2012, 12:47 #3
Если это действительно C++, то можно оставить две версии функции. Они будут считаться перегруженными и компилятор сам выберет необходимую в зависимости от того, передаются в нее параметры или нет.
0
KokosSPb
81 / 84 / 3
Регистрация: 03.02.2011
Сообщений: 468
28.02.2012, 13:21  [ТС] #4
Цитата Сообщение от zss2 Посмотреть сообщение
Так не получится, Вы не можете изменить вызов функции LineSegment.
Оставьте его прежним, а yOld и yNew передайте через глобальные переменные
поподробнее
0
zss
Модератор
Эксперт С++
6404 / 5970 / 1945
Регистрация: 18.12.2011
Сообщений: 15,399
Завершенные тесты: 1
28.02.2012, 13:29 #5
C++
1
2
3
4
5
6
static int yOld,yNew;
void LineSegment(void)
{         
      int l=2;
 
...
1
KokosSPb
81 / 84 / 3
Регистрация: 03.02.2011
Сообщений: 468
28.02.2012, 14:56  [ТС] #6
Цитата Сообщение от zss2 Посмотреть сообщение
C++
1
2
3
4
5
6
static int yOld,yNew;
void LineSegment(void)
{         
      int l=2;
 
...
Пишу
C++
1
2
3
4
5
static int yOld1,yNew1;
yOld1=51;
yNew1=67;
void LineSegment(void){
        int l=2;
выводит кучу
ошибок
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>.\OpenGL1.cpp(16) : error C2086: int yOld1: переопределение
1> .\OpenGL1.cpp(15): см. объявление 'yOld1'
1>.\OpenGL1.cpp(17) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>.\OpenGL1.cpp(17) : error C2086: int yNew1: переопределение
1> .\OpenGL1.cpp(15): см. объявление 'yNew1'
1>.\OpenGL1.cpp(27) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>.\OpenGL1.cpp(27) : error C2556: int glEnd(void): перегруженная функция отличается от 'void glEnd(void)' только возвращаемым типом
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\GL/gl.h(1226): см. объявление 'glEnd'
1>.\OpenGL1.cpp(27) : error C2373: glEnd: переопределение; различные модификаторы типа
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\GL/gl.h(1226): см. объявление 'glEnd'
1>.\OpenGL1.cpp(28) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>.\OpenGL1.cpp(28) : error C2556: int glFlush(void): перегруженная функция отличается от 'void glFlush(void)' только возвращаемым типом
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\GL/gl.h(1242): см. объявление 'glFlush'
1>.\OpenGL1.cpp(28) : error C2373: glFlush: переопределение; различные модификаторы типа
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\GL/gl.h(1242): см. объявление 'glFlush'
1>.\OpenGL1.cpp(29) : error C2059: синтаксическая ошибка: }
1>.\OpenGL1.cpp(29) : error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>.\OpenGL1.cpp(29) : error C2059: синтаксическая ошибка: }
1>.\OpenGL1.cpp(32) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>.\OpenGL1.cpp(32) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)

 Комментарий модератора 
Подобные полотна - под кат!

Добавлено через 2 минуты
Так, тут решил

Добавлено через 17 минут
Спасибо огромное, нашел я свою ошибку
0
zss
Модератор
Эксперт С++
6404 / 5970 / 1945
Регистрация: 18.12.2011
Сообщений: 15,399
Завершенные тесты: 1
28.02.2012, 15:07 #7
Вне функций код писать НЕЛЬЗЯ, можно только объявить переменные
и присвоить им начальные значения.
C++
1
static int yOld=51,yNew=67;
1
KokosSPb
81 / 84 / 3
Регистрация: 03.02.2011
Сообщений: 468
28.02.2012, 15:16  [ТС] #8
Да, я уже понял, я для проверки их пихал, ступил просто они мне тут и не нужны, они будут вводиться извне
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2012, 15:16
Привет! Вот еще темы с ответами:

Функции с числовыми параметрами - C++
Описать функцию Exp l(x,ε) вещественного типа (параметры x,ε- вещественные,ε&gt;0), находящую приближённое значение функции exp(x): ...

Функции с варьирующимися параметрами - C++
Здравствуйте! Подскажите пожалуйста, или дайте ссылку на источник, как использовать функции с варьирующимися параметрами. ...

Объявление функции с необязательными параметрами - C++
Как объявить функцию с необязательными параметрами? Например в этой функции сделать int z необязательным параметром void...

Шаблон функции с параметрами по умолчанию - C++
Можно ли создать такую конструкцию? Если да, можно увидеть пример?


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

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

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