-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfisica_calc.h
188 lines (173 loc) · 5.67 KB
/
fisica_calc.h
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
#ifndef fisica_calc_H_INCLUDED
#define fisica_calc_H_INCLUDED
//BIBLIOTECAS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
// CONSTANTES
#define PERM_VACUO 8.854e-12
#define ELETROSTATICA 9.0e-9
#define MOD_CARGA 1.602e-19
//PROTÓTIPOS
void Inicializador();
void MenuFisica();
int VerificarMod();
int VerificaCarga();
// float *VetCarga();
// float *VetDistancia();
void ModForcaEletrostatica();
// float VetForcaEletrostatica();
int RespostaCalc();
float CalcForca(float q1, float q2, float d);
float CalcDistancia(float f, float q1, float q2);
float CalcCarga(float f, float q, float d, int resp);
//int verificar_resp(int resp);
// IMPLEMENTAÇÕES
void Inicializador(){
system("cls");
printf("CALCULADORA DE FISICA III\n");
printf("Eletricidade e Eletromagnetismo\n");
system("pause");
}
void MenuFisica(){
system("cls");
printf("Formulas:\n");
printf("1-Forca Eletrostatica\n");
printf("2-Quantizacao da Carga Eletrica\n");
printf("3-Sair\n");
printf("Escolha uma opcao:\n");
}
// função que verifica se o usuario deseja trabalhar com modulo
int VerificarMod(){
int resp = 0;
printf("Deseja trabalhar com modulo? (1-Sim/2-Nao)\n");
if(scanf("%d", &resp) == 1) return 1;
else return 0;
}
// função que verifica quais dados o usuário quer calcular
int RespostaCalc(){
int resp = 0;
system("cls");
printf("O que voce deseja calcular?\n");
printf("1-Forca\n");
printf("2-Carga 1 ou Carga 2\n");
printf("3-Carga\n");
printf("4-Distancia\n");
printf("5-Voltar\n");
scanf("%d", &resp);
return resp;
}
// função que calcula a força de uma ou entre duas cargas
float CalcForca(float q1, float q2, float d){
float f = 0;
if (q2 == 0) f = (ELETROSTATICA * q1) / (d * d);
else f = (ELETROSTATICA * q1 * q2) / (d * d);
return f;
}
// função que calcula uma das partículas ou a carga total
float CalcCarga(float f, float q, float d, int resp){
float carga = 0;
if(resp == 2) carga = (f * d * d) / (ELETROSTATICA * q); // calcula uma das cargas se a outra existir
else carga = (f * d * d) / (ELETROSTATICA); // calcula a carga total se nenhuma das duas existir
return carga;
}
//função que verifica se possui duas cargas e retorna true se tiverem duas cargas e false se tiver apenas uma
int VerificaCarga(){
int resp = 0;
printf("Possui carga 1 e carga 2 (1-Sim/2-Nao)?\n");
if(scanf("%d", &resp) == 1) return 1;
else return 0;
}
// float *VetCarga(){
// int n = VerificaCarga();
// float *cargas = (float*)malloc(sizeof(float) * n);
// for(int i = 0; i < n; i++){
// printf("Digite o valor da carga %d (C): ", i + 1);
// scanf("%f", &cargas[i]);
// }
// }
// função que calcula a distância de uma carga a algum ponto ou entre duas cargas
float CalcDistancia(float f, float q1, float q2){
float d = 0;
if(q2 == 0) d = sqrt((ELETROSTATICA * q1) / f);
else d = sqrt((ELETROSTATICA * q1 * q2) / f);
return d;
}
void ModForcaEletrostatica(){
float f = 0, q1 = 0, q2 = 0, d = 0;
int resp = 0;
resp = RespostaCalc();
switch (resp){
case 1:
// float *cargas = VetCarga();
if(!VerificaCarga()){
printf("Digite o valor da carga (C): ");
scanf("%f", &q1);
printf("Digite o valor da distancia (m): ");
scanf("%f", &d);
f = CalcForca(q1, q2, d);
printf("A forca eletrostatica e: %.10f N\n", f);
system("pause");
}
else{
printf("Digite o valor da carga 1 (C): ");
scanf("%f", &q1);
printf("Digite o valor da carga 2 (C): ");
scanf("%f", &q2);
printf("Digite o valor da distancia (m): ");
scanf("%f", &d);
f = CalcForca(q1, q2, d);
printf("A forca eletrostatica e: %.10f N\n", f);
system("pause");
}
break;
case 2:
printf("Digite o valor da forca (N): ");
scanf("%f", &f);
printf("Digite o valor da carga 2 (C): ");
scanf("%f", &q2);
printf("Digite o valor da distancia (m): ");
scanf("%f", &d);
q1 = CalcCarga(f, q2, d, resp);
printf("O valor da carga desejada e: %.10f C\n", q1);
system("pause");
break;
case 3:
printf("Digite o valor da forca (N): ");
scanf("%f", &f);
printf("Digite o valor da distancia (m): ");
scanf("%f", &d);
q1 = CalcCarga(f, q2, d, resp);
printf("O valor da carga desejada e: %f C\n", q1);
system("pause");
break;
case 4:
if(!VerificaCarga()){
printf("Digite o valor da forca (N): ");
scanf("%f", &f);
printf("Digite o valor da carga (C): ");
scanf("%f", &q1);
d = CalcDistancia(f, q1, q2);
printf("A distancia e: %f m\n", d);
system("pause");
}else{
printf("Digite o valor da forca (N): ");
scanf("%f", &f);
printf("Digite o valor da carga 1 (C): ");
scanf("%f", &q1);
printf("Digite o valor da carga 2 (C): ");
scanf("%f", &q2);
d = CalcDistancia(f, q1, q2);
printf("A distancia e: %f m\n", d);
system("pause");
}
break;
case 5:
break;
default:
printf("Opcao invalida!\n");
break;
}
}
#endif