Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание калькулятора! 
:(
    Опции темы
dizel003
  Дата 5.2.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



сдесь я написал простейшую програму чтобы она складывала и вычитала...

Код

#include <iostream.h> 
 #include <fstream.h>
 #include <windows.h>
 #include <iomanip.h>
 
 char bufRus[256]; //Русификация
 char *Rus (const char* text)
 {CharToOem(text,bufRus);
 return bufRus;
 }
 
 struct kalkulator 
 {
     double a,b,c;
 
 };
 
 void read(kalkulator); 
 void write(kalkulator);
 
 int main()
 {kalkulator t;
 int choose;
                                                       
 cout<<Rus("1)Нажмите для сложения")<<endl;
 cout<<Rus("2)Нажмите для вычитания")<<endl;

 
 cout<<Rus("Выбор: ");
 cin>>choose;
 switch(choose)
 {
 case 1:
     write(t);
     break; 
 case 2:
     read(t);
     break;
 default:cout<<Rus("Смотри что вводишь!");break;
 }
 return 0;
 }
 
/*---------------------------------------------------------------------------------*/

 void read(kalkulator t) 
 
 {
     
 int metka=0;
 do
 {
     cout<<Rus("ВВедите первое число")<<endl;
 cin>>t.a;
 cout<<Rus("Введите второе число")<<endl;
 cin>>t.b;
 t.c=t.a-t.b;
 cout<<Rus("\nРазность чисел ")<<t.c<<"\n"<<endl;
 cout<<Rus("Добавить ещё запись? 1-да, 2-нет")<<endl;
 cout<<Rus("Выбор: ")<<endl;
 cin>>metka;}
 while(metka!=2);
 }
 
 /*------------------------------------------------------------------------------------*/
 
 void write(kalkulator t) 
 {
     
 int metka=0;
 do
 {
     cout<<Rus("ВВедите первое число")<<endl;
 cin>>t.a;
 cout<<Rus("Введите второе число")<<endl;
 cin>>t.b;
 t.c=t.a+t.b;
 cout<<Rus("\nСумма чисел ")<<t.c<<"\n"<<endl;

 
 cout<<Rus("Добавить ещё запись? 1-да, 2-нет")<<endl;
 cout<<Rus("Выбор: ")<<endl;
 cin>>metka;}
 while(metka!=2);
 }
 



Подскажите пожалуста как лучше начинать писать калькулятор... Вопервых я смог сделать чтобы программа выходила , но не смог сделать чтобы она переключалась со сложения на вычитание. Потом подскажите пожалуста как написать так чтобы вы складываете ддва числа... и потом можно былобы ответ этот умножить ещё на чтонибудь и потом к примеру разделить... 
Я просто не пойму. Нужно сохранять ответ гдето и потом чтобы его начинала читать программа при выполнении следущей операции или как? smile 

PM MAIL   Вверх
Voldemar2004
Дата 5.2.2008, 17:56 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



Есть такой алгоритм: Прямая Польская Запись и Обратная Польская Запись (нотация). Первая распространения не получила, вторая пользуется практически во всех реализациях калькуляторов.

Пример 1
Пример 2


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
dizel003
Дата 5.2.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Цитата(Voldemar2004 @ 5.2.2008,  17:56)
Есть такой алгоритм: Прямая Польская Запись и Обратная Польская Запись (нотация). Первая распространения не получила, вторая пользуется практически во всех реализациях калькуляторов.

Пример 1
Пример 2

Если можно подскажите полегче способ каконибудь!=)
PM MAIL   Вверх
Voldemar2004
Дата 5.2.2008, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



Ну тогда просто налепить кнопки на форму, а в классе объяви переменную-буфер - туда и будешь скидывать результат промежуточных вычислений. smile

Добавлено через 1 минуту и 41 секунду
ОПЗ хороша тем, что ты сможешь вычислять выражения типа: sin(x)*3(100(1+2)/2) - одной строкой !


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
dizel003
Дата 5.2.2008, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



а случайно у васн нету примера по которому это все можно былобы делать? smile 
PM MAIL   Вверх
Voldemar2004
Дата 5.2.2008, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



Делал на Visual Basic, правда давно. Не используя ОПЗ. Из-за чего там можно было использовать только бинарные операции без скобок и т.д.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
t_gran
Дата 6.2.2008, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

Репутация: нет
Всего: 37



Обратная Польская Запись- понятно, доступно и с примером. И в конечном итоге полностью реализовывается калькулятор.

Это сообщение отредактировал(а) t_gran - 6.2.2008, 12:33


--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
dizel003
Дата 6.2.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Цитата(t_gran @ 6.2.2008,  12:30)
Обратная Польская Запись- понятно, доступно и с примером. И в конечном итоге полностью реализовывается калькулятор.

Огромнейшее спасибо!! smile

Добавлено через 15 секунд
на много понятнее...
PM MAIL   Вверх
new_web
Дата 6.2.2008, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 1.2.2008

Репутация: нет
Всего: нет



А давайте сделаем  калкулятор, как у виндовс. только посзволим копирование и вставку, может ещё пару функций придумаем. и попрактиковаться будет полезно. 
Я бы сделал принт_скрин, и поворил бы кнопки,интерфейс. 
А задать все функции будет, наверное и попроще чем в консоли!

Торлько ради развлеения и набора опыта в програмировании, да и пригодится когда-нибуть, только самому как-то скучно, короче. ищу товарища по парте!
PM MAIL   Вверх
dizel003
Дата 6.2.2008, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Цитата(new_web @ 6.2.2008,  21:37)
А давайте сделаем  калкулятор, как у виндовс. только посзволим копирование и вставку, может ещё пару функций придумаем. и попрактиковаться будет полезно. 
Я бы сделал принт_скрин, и поворил бы кнопки,интерфейс. 
А задать все функции будет, наверное и попроще чем в консоли!

Торлько ради развлеения и набора опыта в програмировании, да и пригодится когда-нибуть, только самому как-то скучно, короче. ищу товарища по парте!

Я бы срадостью... но дело в том что я буду это проходить в институте с 16 февраля... я до этого ещё не дашёл))) я прошёл практически всю теорию... так что врятли смогу помочь покашто разработкам под windows smile 
PM MAIL   Вверх
dizel003
Дата 7.2.2008, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Если ещё кто прочитает эту тему smile  то подскажите можно сделать калькулятор всетаки по принцыму моей программы с помощью case?
PM MAIL   Вверх
Dronchik
Дата 14.2.2008, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 1.5.2007

Репутация: 1
Всего: 37



Мой первый калькулятор сделаный в далной молодости smile 
Код

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    char znak;
    int chislo[2];
    cin>>chislo[0];
    cout<<endl;
    cin>>znak;
    cout<<endl;
    cin>>chislo[1];    
    cout<<endl;    
    switch(znak)
    {
                case '+':
                     chislo[2]=chislo[0]+chislo[1];
                     break;
                case '-':
                     chislo[2]=chislo[0]-chislo[1];
                     break;
                case '*':
                     chislo[2]=chislo[0]*chislo[1];
                     break;
                case '/':
                     chislo[2]=chislo[0]/chislo[1];
                     break;
    }
    cout<<chislo[2]<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}




--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

PM MAIL WWW ICQ   Вверх
dizel003
Дата 14.2.2008, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



[QUOTE=Dronchik,14.2.2008,  17:09]Мой первый калькулятор сделаный в далной молодости smile 
[ smile 
Вот ттакой же примитивный пример (делал в школу)-

Код

#include <iostream.h> 
 #include <fstream.h>
 #include <windows.h>
 #include <iomanip.h>
#include <math.h>
 
 char bufRus[256]; 
 char *Rus (const char* text)
 {CharToOem(text,bufRus);
 return bufRus;
 }
 
 struct kalkulator 
 {
     double a,b,c;
 
 };
 
 void writen(kalkulator); 
 void write(kalkulator);
 void writ(kalkulator);
 void wri(kalkulator);
 void wr(kalkulator);
 void w(kalkulator);




 int main()
 {kalkulator t;
 int choose;
 cout<<setw(45)<<Rus("КАЛЬКУЛЯТОР")<<endl;                                                      
 cout<<Rus("1)Нажмите для сложения")<<endl;
 cout<<Rus("2)Нажмите для вычитания")<<endl;
 cout<<Rus("3)Нажмите для умножения")<<endl;
 cout<<Rus("4)Нажмите для деления")<<endl;
 cout<<Rus("5)Нажмите для получения корня из числа")<<endl;
 cout<<Rus("6)Нажмите для возведения числа в любую степень")<<endl;

  
 
 cout<<Rus("Выбор: ");
 cin>>choose;
 switch(choose)
 {
 case 1:
     write(t);
     break; 
 case 2:
     writen(t);
     break;
 case 3:
     writ(t);
     break;
case 4:
     wri(t);
     break;
case 5:
     wr(t);
     break;
case 6:
     w(t);
     break;


 default:cout<<Rus("Смотри что вводишь!");break;
 }
 return 0;
 }
 
/*---------------------------------------------------------------------------------*/

 void writen(kalkulator t) 
 
 {
     
 int metka=0;
 do
 {
     cout<<Rus("ВВедите первое число и нажмите Enter")<<endl;
 cin>>t.a;
 cout<<Rus("Введите второе число и нажмите Enter")<<endl;
 cin>>t.b;
 t.c=t.a-t.b;
 cout<<Rus("\nРазность чисел ")<<t.c<<"\n"<<endl;
 cout<<Rus("Добавить ещё запись? 1-да, 2-нет")<<endl;
 cout<<Rus("Выбор: ")<<endl;
 cin>>metka;}
 while(metka!=2);
 }
 
 /*------------------------------------------------------------------------------------*/
 
 void write(kalkulator t) 
 {
     
 int metka=0;
 do
 {
     cout<<Rus("ВВедите первое число и нажмите Enter")<<endl;
 cin>>t.a;
 cout<<Rus("Введите второе число и нажмите Enter")<<endl;
 cin>>t.b;
 t.c=t.a+t.b;
 cout<<Rus("\nСумма чисел ")<<t.c<<"\n"<<endl;

 
 cout<<Rus("Добавить ещё запись? 1-да, 2-нет")<<endl;
 cout<<Rus("Выбор: ")<<endl;
 cin>>metka;}
 while(metka!=2);
 }
 

/*------------------------------------------------------------------------------------*/


 void writ(kalkulator t) 
 {
     
 int metka=0;
 do
 {
     cout<<Rus("ВВедите первое число и нажмите Enter")<<endl;
 cin>>t.a;
 cout<<Rus("Введите второе число и нажмите Enter")<<endl;
 cin>>t.b;
 t.c=t.a*t.b;
 cout<<Rus("\nПроизведение чисел ")<<t.c<<"\n"<<endl;

 
 cout<<Rus("Добавить ещё запись? 1-да, 2-нет")<<endl;
 cout<<Rus("Выбор: ")<<endl;
 cin>>metka;}
 while(metka!=2);
 }

/*------------------------------------------------------------------------------------*/


 void wri(kalkulator t) 
 {
     
 int metka=0;
 do
 {
     cout<<Rus("ВВедите первое число и нажмите Enter")<<endl;
 cin>>t.a;
 cout<<Rus("Введите второе число и нажмите Enter")<<endl;
 cin>>t.b;
 t.c=t.a/t.b;
 cout<<Rus("\nделение чисел ")<<t.c<<"\n"<<endl;

 
 cout<<Rus("Добавить ещё запись? 1-да, 2-нет")<<endl;
 cout<<Rus("Выбор: ")<<endl;
 cin>>metka;}
 while(metka!=2);
 }

/*------------------------------------------------------------------------------------*/


 void wr(kalkulator t) 
 {
     
 int metka=0;
 do
 {
     cout<<Rus("ВВедите число и нажмите Enter")<<endl;
 cin>>t.a;

 t.c=sqrt(t.a);
 cout<<Rus("\nкорень числа ")<<t.c<<"\n"<<endl;

 
 cout<<Rus("Добавить ещё запись? 1-да, 2-нет")<<endl;
 cout<<Rus("Выбор: ")<<endl;
 cin>>metka;}
 while(metka!=2);
 }

/*------------------------------------------------------------------------------------*/


 void w(kalkulator t) 
 {
     
 int metka=0;
 do
 {
     cout<<Rus("ВВедите число и нажмите Enter")<<endl;
 cin>>t.a;
     cout<<Rus("ВВедите степеь числа и нажмите Enter")<<endl;
 cin>>t.b;


 t.c=pow(t.a,t.b);
 cout<<Rus("\nчисло возведённое в степень ")<<t.c<<"\n"<<endl;

 
 cout<<Rus("Добавить ещё запись? 1-да, 2-нет")<<endl;
 cout<<Rus("Выбор: ")<<endl;
 cin>>metka;}
 while(metka!=2);
 }

/*------------------------------------------------------------------------------------*/





Это сообщение отредактировал(а) dizel003 - 14.2.2008, 17:53
PM MAIL   Вверх
Dronchik
Дата 14.2.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 1.5.2007

Репутация: 1
Всего: 37



оффтоп:
{
dizel003, а я ещё в школе учусь, в 6 классе.
}
По теме: вот приметивные примеры на оторых можно учиться. Они просты в понятии.


--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

PM MAIL WWW ICQ   Вверх
source777
Дата 14.2.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Цитата(new_web @  6.2.2008,  21:37 Найти цитируемый пост)
А давайте сделаем  калкулятор, как у виндовс. только посзволим копирование и вставку, может ещё пару функций придумаем. и попрактиковаться будет полезно. 
А я уже такой сделал года 2 назад, только на C#, фактически полный клон инженерного режима стандартного калькулятора, только без статистических функций и с ограниченной точностью... правда ещё раньше я делал калькулятор на Delphi с использованием ОПЗ, однако без неё интереснее, ибо сложнее...



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0656 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.