Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Организация многооконного интерфейса


Автор: sparker 8.4.2007, 10:04
1. Организация многооконного интерфейса
user posted image
2. Вычисление суммы ряда
user posted image
3. Совместить 

1. Первое, т.е. окна я написала.
2. Как вычислять сумму ряда я не понимаю, т.е. циклы с другим примером я писала, но не понимаю как считать эти косинус, сумму, факториалы, ect..
3. И я не понимаю как прикрутить эту сумму ряда к окнам, т.е. чтобы задача/ввод/исходное число/результат выводилось в этих окнах

Автор: nerezus 8.4.2007, 10:19
1) Не верю, иначе бы не было вопроса (3). Да и это имхо намного сложнее, чем (2).

2) Обычным циклом по первым n членам, т.к. последние члены ряда малы и ими можно пренебречь.
А чтобы посчитать факториал, достаточно обладать знаниями 8 класса начальной школы. Именно там с ними знакомятся. Подскажу: цикл.
Чтобы посчитать сумму, надо просто сложить =) Логично?

Автор: GIK 8.4.2007, 10:24
Цитата

2. Как вычислять сумму ряда я не понимаю, т.е. циклы с другим примером я писала, но не понимаю как считать эти косинус, сумму, факториалы, ect..

Чет, не вкурю... А как быть с бесконечностью то? Как написать цикл если имеем дело с бесконечностью???

Автор: sparker 8.4.2007, 10:46
Цитата

1) Не верю, иначе бы не было вопроса (3). Да и это имхо намного сложнее, чем (2).
а что , написать окна это сложно? просто то , что нам объясняют - я понимаю. а как (2) вставить в (1) , т.е. (3) нам не объясняли, поэтому и не понимаю.
Цитата

2) Обычным циклом по первым n членам, т.к. последние члены ряда малы и ими можно пренебречь.
я не понимаю как составить этот цикл.
Цитата

А чтобы посчитать факториал, достаточно обладать знаниями 8 класса начальной школы.
ни паверишь!! но у нас не было факториалов!

Автор: nerezus 8.4.2007, 10:50
Цитата

ни паверишь!! но у нас не было факториалов! 
 Дадо перемножить все целые числа включительно.
Например 8! = 1*2*3*4*5*6*7*8

Автор: GIK 8.4.2007, 10:56
Цитата

Дадо перемножить все целые числа включительно.
Например 8! = 1*2*3*4*5*6*7*8 

Можно 1 опустить кстати.

Ответте, как быть с бесконечностью в цикле.

Добавлено через 2 минуты и 50 секунд
Так можно подсчитать факториал числа 8 в цикле к примеру.
Код

int itog;
for(int i=2; i<8; i++){
itog*=i*i+1;
}


Добавлено через 5 минут и 22 секунды
Тфу, торможу, перемудрилвот, вот так надо  smile 

Код

int itog=1;
for(int i=2; i<=8; i++){
itog*=i;
}

Автор: sparker 8.4.2007, 11:13
объясните мне как написать цикл и вставить все ето в окна))

Автор: ama_kid 8.4.2007, 11:15
Цитата(GIK @  8.4.2007,  10:24 Найти цитируемый пост)
Чет, не вкурю... А как быть с бесконечностью то? Как написать цикл если имеем дело с бесконечностью??? 
С бесконечностью дела обычно не имеют, с ней достаточно проблем в философии, не то, что в программировании smile Обычно в исходных данных вводят допустимую погрешность и цикл крутят до тех пор, пока текущая погрешность превышает допустимую (ну а также можно ввести ограничение на число циклов для защиты от зацикливания). Псевдокод:
Код
input Eps0 = 0.0001;
do 
 Sum = Sum+"очередной член суммы";
 eps= fabs(cos(x) - Sum);
while(eps>eps0);

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

Автор: sparker 8.4.2007, 12:53
так а погрешность то какая? откуда мне ее брать?

Автор: ama_kid 8.4.2007, 13:00
sparker
Я же сказал:
Цитата(ama_kid @  8.4.2007,  11:15 Найти цитируемый пост)
в исходных данных вводят допустимую погрешность

Вот тебе пример вычисления твоего ряда Тейлора для косинуса:
Код
double GetCos(int x, double eps0)
{
    const double Pi = 3.1415926;
    double Sum = 1;
    int i =2;
    long fakt = 2;
    double stx = (x*Pi/180)*(x*Pi/180);
    int z = -1;
    while ((stx/fakt)>=eps0)
    {
     Sum+=z*stx/fakt;
     i++;i++;
     stx*=(x*Pi/180)*(x*Pi/180);
     fakt*=(i-1)*i;
     z*=-1;        
    }
    return Sum;
}
Если ты сделала (1), прикрутить с нему эту функцию тебе проблем не составит... Вот пример вызова:
Код
std::cout<<GetCos(45,0.0001);
Как видишь, погрешность здесь задается... В качестве домашнего задания - можешь сделать ограничение от зацикливания  smile 

Автор: sparker 14.4.2007, 18:17
извиняйте, но как прикрутить я так и не поняла - не объясняли нам этого. объясните пожалуйста как , а то ведь так глупой и останусь..

Автор: srd 14.4.2007, 18:33
Ну, покажи хоть свои "окна" smile Без этого тяжело что-то куда-то прикрутить

Автор: sparker 14.4.2007, 21:11
Код

#include<sydio.h>
#include<conio.h>
#include<string>
void okno (int x1, int y1, int x2, int y2, int bkcol, int clob, char zag[15]);
void main()
{
int a;
okno(1, 1, 80, 25, BLACK, WHITE, "");
okno(1, 1, 30, 12, WHITE, BLACK, "Описание");
cprintf("\r\n Ввести значение квадрата числа");
okno(32, 1, 79, 12, BLUE, WHITE, "Исходное число");
okno(32, 14, 79, 24, BLUE, WHITE, "Результат вычисления");
okno(1, 14, 30, 24, GREEN, RED, "Окно ввода");
cprintf("\r\n Введите исходное число");
scanf("%i", &a);
okno(32, 1, 79, 24, BLUE, WHITE, "Исходное число");
cprintf("\r\n Начальное значение = %i", a);
okno(32, 14, 79, 24, BLUE, WHITE, "Результат вычисления");
cprintf("\r\n Квадрат числа %i = %i\r\n", a, a*a);
getchat();
getchar();
}
void okno(int x1, int y1, int x2, int y2, int bkcol, int colb, char zag[15])
{
window(x1, y1, x2, y2);
textbackground(bkcol);
textcolor(colb);
clrscr();
gotoxy((x2 - x1 - strlen(zag)) / 2, 1);
cprintf("%s \n\r", zag);
window(x1, y1 + 1, x2, y2);
}


тут на примере квадрата числа.
ну то бишь в описании должно стоять условие - сумма ряда
ввод - тоже все через интерфейс етот
ect

Автор: apook 15.4.2007, 04:43
Я тут ни че не понял но мне кажется что ввод и вывод надо производить
обыкновенно. при этом просто смещать курсор чтоб вывод получался как
раз на окно gotoxy(); cprintf(); надо при этом использовать... Это текстовое
окно и "слегка" не то  что называется окном в Windows nerezus наверно подумал что ты о настоящих Виндозных окнах

Автор: sparker 15.4.2007, 09:32
да канешна не виндувские))
ну ты попробуй запустить то - у меня все впорядке получилось

Автор: apook 15.4.2007, 09:56
Цитата

у меня все впорядке получилось 

Ты конечно молодец, но если ты нарисовала окошко почему для тебя является сложностью
нарисовать на нем текст?

Автор: nerezus 15.4.2007, 10:24
Цитата

nerezus наверно подумал что ты о настоящих Виндозных окнах
 Я подумал о классе контролла, который наследуют все элементы, о паттерне композит, об отрисовке элемента-контейнера и после этого отрисовке элементов на нем и т.д.

А не просто о нарисованом неизменяемом квадрате.

Автор: Anikmar 15.4.2007, 11:45
Цитата(sparker @  8.4.2007,  10:04 Найти цитируемый пост)
1. Организация многооконного интерфейса

То что сделано никак нельзя назвать многооконным интерфейсом. Окно там всего одно - консоль, просто в разные его места выведены цветные прямоугольнички с текстом.

Может быть в задании имелось в виду именно полноценное Windows-приложение, а не консольное?

Автор: sparker 15.4.2007, 12:40
ну извиняйте - правда сразу надо было выложить ето
Цитата

Ты конечно молодец, но если ты нарисовала окошко почему для тебя является сложностью
нарисовать на нем текст? 
есчо раз повторяю - то что нам объясняют - я понимаю. этого нам не объясняли. поэтому я даже представления не имю как это делается
Цитата

То что сделано никак нельзя назвать многооконным интерфейсом. Окно там всего одно - консоль, просто в разные его места выведены цветные прямоугольнички с текстом.

ну по крайней мере наш препод называет это много оконным интерфейсом, потому что нам несколько квадратиков, то бишь окон =)
Цитата

Может быть в задании имелось в виду именно полноценное Windows-приложение, а не консольное?
неа, нам же объясняли))

Автор: apook 15.4.2007, 13:16
Цитата

этого нам не объясняли

ты не понимаешь... smile 

Автор: sparker 15.4.2007, 13:39
Цитата(apook @ 15.4.2007,  14:16)
ты не понимаешь... smile

нам сказали сами поймете))

Автор: nerezus 15.4.2007, 13:52
Цитата

этого нам не объясняли.
 И что с того? Мне же вообще почти ничего не объясняли. Согласно твоей логики я вообще ничего уметь не должен.

Автор: sparker 15.4.2007, 14:36
nerezus, да , я понимаю, нужно посидеть и разобраться самой, но точно так же я могу сказать, если вам так сложно мне помочь , то не нужно тут и флейм разводить на тему кто чего не умеет и как нужно грызть гранит науки...

Автор: Anikmar 15.4.2007, 15:28
Цитата(sparker @  15.4.2007,  14:36 Найти цитируемый пост)
если вам так сложно мне помочь

Помочь или написать за вас?

Если помочь - то ради Бога, здесь вам многие готовы помочь. Только лично я не понимаю в чем эта помощь должна выразится, кроме как дать вам готовый код.

Для помощи существует специальный раздел на этом форуме - там как раз напишут за вас (если договоритесь). Называется этот раздел "Центр помощи"

А в этом разделе помогают разобраться с конкретными вопросами. Например: "Как мне вывести текст в заданную позицию экрана".

А вопрос "Как сделать" или "Что-то мне не написать программу" - это уже в Центр помощи.

Автор: Любитель 15.4.2007, 15:50
Цитата(Anikmar @  15.4.2007,  11:45 Найти цитируемый пост)
То что сделано никак нельзя назвать многооконным интерфейсом. Окно там всего одно - консоль, просто в разные его места выведены цветные прямоугольнички с текстом.

На код толком не смотрел, но предполагаю, что имитацие многоконного интерфейса его вполне можно назвать. В FAR тоже есть окошки, диалоги (логически), хотя формально - всё одна консоль.  Не аргумент.

И ещё - я так и не понял, какие вопросы остались? smile 2 вроде объяснили, а 3 ты вроде сама ответила. Или я что-то не так понял...

Автор: sparker 15.4.2007, 15:57
Любитель, (3) - я не понимаю как сумму ряда, вычисления, ответ прикрутить к окнам

Автор: vinter 15.4.2007, 16:03
sprintf(...) && outtextxy() == resolve
не заметил что не графикаsmile
тогда gotoxy(/*координаты в окошке*/) -> cprintf(...) и фсе

Автор: Любитель 15.4.2007, 16:10
Цитата(sparker @  15.4.2007,  15:57 Найти цитируемый пост)
я не понимаю как сумму ряда, вычисления, ответ прикрутить к окнам 

Абсолютно аналогично твоему квадртау выше. У тебя два параметра: собсно и точность, то есть некотрое eps. Цикл вычислений суммы ряда идёт пока разность между предыдущим значением суммы и новым (т. е. значение очередного члена ряда) не станет (по модулю) меньше eps.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)