Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

danieliangels

preciso programar uma calculadora em linguagem cutilizando funçoes, ma

Recommended Posts

funções de que ?!?!?!por exemplo para facturiais tens que fazer um simples algoritmo, para potenciais outro ... etc não te vou mostar a sintaxe da soma porqe isso seria humilhante :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você tiver alguem enunciado, poste! para que fique mais facil... ou diga os tipos de operações...Pois como disse o Cypher é meio complicado, postarmos um código para + e -... se for esta feito....Falows...

Compartilhar este post


Link para o post
Compartilhar em outros sites

GALERA ISSO FOI O QUE EU CONSEGUI FAZER.#include <stdio.h>float adicao(float a, float B){ return a+b;}float subtracao(float a, float B){ return a-b;}float multiplicacao(float a, float B){ return a*b;}float divisao(float a, float B){ if(B) return a/b; else return 0;}main(){ float total=0, numero=0; char sinal; printf("Valor: "); scanf("%f",&total);fflush(stdin); printf("Sinal: "); scanf("%c",&sinal);fflush(stdin); while(sinal!='=') { printf("Valor: "); scanf("%f",&numero);fflush(stdin); switch(sinal) { case '+' : total=adicao(total,numero); break; case '-' : total=subtracao(total,numero); break; case '*' : total=multiplicacao(total,numero); break; case '/' : total=divisao(total,numero); break; } printf("Resultado Parcial: %f\n",total); printf("Sinal: "); scanf("%c",&sinal);fflush(stdin); } printf("Resultado Total: %f\n",total); getchar();} BJOS A TODOS

Compartilhar este post


Link para o post
Compartilhar em outros sites

main(){float resultado =0, a=0,b=0;char sinal;do{printf("\nDigite um valor para A: ");scanf("%f",&a);printf("\nDigite um valor para B: ");scanf("%f",&B);printf("\nDigite a operação que deseja efetuar: ");scanf("%c",&sinal);switch(sinal){case '+' : resultado=adicao(a,B); prb); printf("\nO resultado da soma é: %f",resultado);break;case '-' : resultado=subtracao(a,B); printf("\nO resultado da subtração é: %f",resultado); break;case '*' : resultado=multiplicacao(a,B); printf("\nO resultado da multiplicaçao é: %f",resultado);break;case '/' : resultado=divisao(a,B); printf("\nO resultado da divisao é: %f",resultado);break;}}while(true);}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa é uma calculadora em pascal segue essa lógica....Carlos....program Calc;{$B-}{$R CALC.RES}uses WObjects, WinTypes, WinProcs, Strings;const{ Application name } AppName: PChar = 'Calc';{ Number of digits in calculator display } DisplayDigits = 15;{ Control ID of display static text } id_Display = 400;{ Color constants } rgb_Yellow = $0000FFFF; rgb_Blue = $00FF0000; rgb_Red = $000000FF;type{ Calculator state } TCalcState = (cs_First, cs_Valid, cs_Error);{ Calculator dialog window object } PCalc = ^TCalc; TCalc = object(TDlgWindow) CalcStatus: TCalcState; Number: array[0..DisplayDigits] of Char; Negative: Boolean; Operator: Char; Operand: Real; BlueBrush: HBrush; constructor Init; destructor Done; virtual; function GetClassName: PChar; virtual; procedure GetWindowClass(var AWndClass: TWndClass); virtual; procedure WMControlColor(var Msg: TMessage); virtual wm_First + wm_CtlColor; procedure WMPaint(var Msg: TMessage); virtual wm_First + wm_Paint; procedure DefChildProc(var Msg: TMessage); virtual; procedure DefCommandProc(var Msg: TMessage); virtual; procedure FlashButton(Key: Char); procedure CalcKey(Key: Char); procedure Clear; procedure UpdateDisplay; virtual; end;{ Calculator application object } TCalcApp = object(TApplication) procedure InitMainWindow; virtual; procedure InitInstance; virtual; function ProcessAppMsg(var Message: TMsg) : Boolean; virtual; end;var{ Application instance } CalcApp: TCalcApp;{ Calculator constructor. Create blue brush for calculator background, and do a clear command. }constructor TCalc.Init;begin TDlgWindow.Init(nil, AppName); BlueBrush := CreateSolidBrush(rgb_Blue); Clear;end;{ Calculator destructor. Dispose the background brush. }destructor TCalc.Done;begin DeleteObject(BlueBrush); TDlgWindow.Done;end;{ We're changing the window class so we must supply a new class name. }function TCalc.GetClassName: PChar;begin GetClassName := AppName;end;{ The calculator has its own icon which is installed here. }procedure TCalc.GetWindowClass(var AWndClass: TWndClass);begin TDlgWindow.GetWindowClass(AWndClass); AWndClass.hIcon := LoadIcon(HInstance, AppName);end;{ Colorize the calculator. Allows background to show through corners of buttons, uses yellow text on black background in the display, and sets the dialog background to blue. }procedure TCalc.WMControlColor(var Msg: TMessage);begin case Msg.LParamHi of ctlColor_Btn: Msg.Result := GetStockObject(null_Brush); ctlColor_Static: begin SetTextColor(Msg.WParam, rgb_Yellow); SetBkMode(Msg.WParam, transparent); Msg.Result := GetStockObject(black_Brush); end; ctlcolor_Dlg: begin SetBkMode(Msg.WParam, Transparent); Msg.Result := BlueBrush; end; else DefWndProc(Msg); end;end;{ Even dialogs can have their background's painted on. This creates a red ellipse over the blue background. }procedure TCalc.WMPaint(var Msg: TMessage);var OldBrush: HBrush; OldPen: HPen; R: TRect; PS: TPaintStruct;begin BeginPaint(HWindow, PS); OldBrush := SelectObject(PS.hdc, CreateSolidBrush(rgb_Red)); OldPen := SelectObject(PS.hdc, GetStockObject(null_Pen)); GetClientRect(HWindow, R); R.bottom := R.right; OffsetRect(R, -R.right div 4, -R.right div 4); Ellipse(PS.hdc, R.left, R.top, R.right, R.bottom); SelectObject(PS.hdc, OldPen); DeleteObject(SelectObject(PS.hdc, OldBrush)); EndPaint(HWindow, PS);end;{ Flash a button with the value of Key. Looks exactly like a click of the button with the mouse. }procedure TCalc.FlashButton(Key: Char);var Button: HWnd; Delay: Word;begin if Key = #13 then Key := '='; Button := GetDlgItem(HWindow, Integer(UpCase(Key))); if Button <> 0 then begin SendMessage(Button, bm_SetState, 1, 0); for Delay := 1 to 30000 do; SendMessage(Button, bm_SetState, 0, 0); end;end;{ Rather then handle each button individually with child ID response methods, it is possible to handle them all at once with the default child procedure. }procedure TCalc.DefChildProc(var Msg: TMessage);begin if (Msg.WParamHi = 0) and (Msg.LParamHi = bn_Clicked) then CalcKey(Char(Msg.WParamLo)); TDlgWindow.DefChildProc(Msg);end;{ Rather then handle each accelerator individually with command ID response methods, it is possible to handle them all at once with the default command procedure. }procedure TCalc.DefCommandProc(var Msg: TMessage);begin if Msg.WParamHi = 0 then begin FlashButton(Char(Msg.WParamLo)); { flash button as if it were pushed } CalcKey(Char(Msg.WParamLo)); end; TDlgWindow.DefCommandProc(Msg);end;{ Set Display text to the current value. }procedure TCalc.UpdateDisplay;var S: array[0..DisplayDigits + 1] of Char;begin if Negative then StrCopy(S, '-') else S[0] := #0; SetWindowText(GetDlgItem(HWindow, id_Display), StrCat(S, Number));end;{ Clear the calculator. }procedure TCalc.Clear;begin CalcStatus := cs_First; StrCopy(Number, '0'); Negative := False; Operator := '=';end;{ Process calculator key. }procedure TCalc.CalcKey(Key: Char);var R: Real; procedure Error; begin CalcStatus := cs_Error; StrCopy(Number, 'Error'); Negative := False; end; procedure SetDisplay(R: Real); var First, Last: PChar; S: array[0..63] of Char; begin Str(R: 0: 10, S); First := S; Negative := False; if S[0] = '-' then begin Inc(First); Negative := True; end; if StrLen(First) > DisplayDigits + 1 + 10 then Error else begin Last := StrEnd(First); while Last[Word(-1)] = '0' do Dec(Last); if Last[Word(-1)] = '.' then Dec(Last); StrLCopy(Number, First, Last - First); end; end; procedure GetDisplay(var R: Real); var E: Integer; begin Val(Number, R, E); if Negative then R := -R; end; procedure CheckFirst; begin if CalcStatus = cs_First then begin CalcStatus := cs_Valid; StrCopy(Number, '0'); Negative := False; end; end; procedure InsertKey; var L: Integer; begin L := StrLen(Number); if L < DisplayDigits then begin Number[L] := Key; Number[L + 1] := #0; end; end;begin Key := UpCase(Key); if (CalcStatus = cs_Error) and (Key <> 'C') then Key := ' '; case Key of '0'..'9': begin CheckFirst; if StrComp(Number, '0') = 0 then Number[0] := #0; InsertKey; end; '.': begin CheckFirst; if StrPos(Number, '.') = nil then InsertKey; end; #8: begin CheckFirst; if StrLen(Number) = 1 then StrCopy(Number, '0') else Number[strLen(Number) - 1] := #0; end; '_': Negative := not Negative; '+', '-', '*', '/', '=', '%', #13: begin if CalcStatus = cs_Valid then begin CalcStatus := cs_First; GetDisplay®; if Key = '%' then case Operator of '+', '-': R := Operand * R / 100; '*', '/': R := R / 100; end; case Operator of '+': SetDisplay(Operand + R); '-': SetDisplay(Operand - R); '*': SetDisplay(Operand * R); '/': if R = 0 then Error else SetDisplay(Operand / R); end; end; Operator := Key; GetDisplay(Operand); end; 'C': Clear; end; UpdateDisplay;end;procedure TCalcApp.InitMainWindow;begin MainWindow := New(PCalc, Init);end;procedure TCalcApp.InitInstance;begin TApplication.InitInstance; HAccTable := LoadAccelerators(HInstance, AppName);end;function TCalcApp.ProcessAppMsg(var Message: TMsg): Boolean;begin ProcessAppMsg := ProcessAccels(Message) or ProcessDlgMsg(Message);end;begin CalcApp.Init(AppName); CalcApp.Run; CalcApp.Done;end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.