Tenho este programa de simular um telemóvel mas não consigo fazer as outras partes dele .gostaria de ter um ajuda
/*************************************************************************
* UM_AEDII_MOBILE_NETWOR_SIMULATOR: Programa que impementa *
* Trabalho prático de AED II *
* Autor(es) : Ranistel Rodrigues *
* Docente : Paulo Silva *
* Data : 11-05-2016 - Versão 1.0.1 *
*************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <locale.h>
#include "aed.h"
#define MAX_TELEM 100
//char *rede[MAX_TELEM];
char rede[MAX_TELEM][8];
int PIN[MAX_TELEM];
float saldo[MAX_TELEM];
char *desligado[MAX_TELEM];
char numTele[];
double valorCarregamento;
int _carregamento(char numTele[], double valorCarregamento);
int _chamada(char numeroTelem[]);
char numeroTelem[];
char telemOrigem[], numTelemDestino[], valor;
int _chamada(char numeroTelem[]);
int main() {
system ("color F9");
setlocale(LC_ALL,"");
int resp;
int querTerminar=0;
int num_saldo;
int desconto;
char* comando="";
char comandoD[20];
char numeroM[8];
int codPin;
int contaTelem=0;
int resultadChamada=0;
limpaCls();
msgInicial();
do {
resp=lerComando(comandoD);
switch (resp) {
case 1 : {
resp=lerMovel(numeroM);
if (resp == -2) break;
if (lerPIN(&codPin) == -2 ) break;
resultadChamada =_registarMovel(numeroM,codPin,&contaTelem);
if (resultadChamada)
printf("\nRegisto Movel %s OK\n", numeroM);
else if (resultadChamada == 0)
printf("\nRegisto Movel %s NOK\n", numeroM);
getchar();
break;
}
case 2 : {
lerMovel(numeroM);
lerPIN(&codPin);
_ligarMovel(numeroM, codPin);
break;
}
case 3 : {
lerMovel(numeroM);
_desligarMovel(numeroM);
break;
}
case 4 : {
_carregamento(numTele[MAX_TELEM],valorCarregamento);
// _carregamento();
break;
}
case 5 : {
lerMovel(numeroM);
lerPIN(&codPin);
_dalSaldo(numTele[MAX_TELEM]);
printf ("||Numero de movel: %s\t||saldo: %.2f$00\t||estado:%d\n", numeroM,valorCarregamento);
// _dalSaldo();
break;
}
case 6 :{
_tmaSaldo(telemOrigem[MAX_TELEM],numTelemDestino[MAX_TELEM],valor);
//_tmaSaldo();
break;
}
case 7 : {
_chamada(numeroTelem[MAX_TELEM]);
// _chamada();
break;
}
case 8 : {
// _sms();
break;
}
case 9 : {
// _chamarsos();
break;
}
case 10 : {
limpaCls();
_ajuda();
break;
}
case 11 : {
_show();
break;
}
case 12 : {
// status();
break;
}
case -1 : {
querTerminar=1;
break;
}
case -2 : {
printf("\n\nComando inválido. Para obter ajuda digite help\n");
printf("Primir ENTER para continuar");
getchar();
limpaCls();
break;
}
case 0 : {
limpaCls();
msgInicial();
break;
}
}
} while (!querTerminar);
return 0;
}
/****************************************************************
* msgInicial: apresenta mensagem inicial do programa ao iniciar *
* *
* *
****************************************************************/
void msgInicial() {
printf("__UM AED II Mobile Network__\n");
printf("__Para realizar alguma acção escreve um comando__");
}
/****************************************************************
* limpaCls: limpa o ecra *
* *
* *
***************************************************************/
void limpaCls() {
#ifdef __linux__
system("clear");
#elif defined WIN32 || WIN64
system("cls");
#else
printf("\nERRO: Plataforma nao suportada.\n");
printf("Disponivel apenas para Linux e Windows");
getchar();
exit(1);
#endif
}
/****************************************************************
* lerComando: Função que vai ler uma sequência de caracteres *
* que representa um comando. *
* retorna: inteiro que é o comando correspondente *
************************************************************** */
int lerComando(char *c) {
//char comandoS[20];
char comandoS[20];
int valido=-1;
printf("\n\nregistrar\nligar\ndesligar\ncarregamento\ndasaldo\ntmasaldo\nchamada\nsms\nsos\nshow\nstatus\nterminar");
printf("\n\nSimulador UM Mobile ---->: ");
fgets(comandoS,20,stdin);
strncpy(c, comandoS,20);
if (strcmp(c,"\n") == 0) {
return 0;
}
if (strcmp(c,"registar\n") == 0) {
c = comandoS;
valido=1;
}
else if (strcmp(comandoS,"ligar\n")== 0) {
c = comandoS;
valido=2;
}
else if (strcmp(comandoS,"desligar\n")== 0) {
c = comandoS;
valido=3;
}
else if (strcmp(comandoS,"carregamento\n")== 0) {
c = comandoS;
valido=4;
}
else if (strcmp(comandoS,"daSaldo\n")== 0) {
c = comandoS;;
valido=5;
}
else if (strcmp(comandoS,"tmaSaldo\n")== 0) {
c = comandoS;
valido=6;
}
else if (strcmp(comandoS,"chamada\n")== 0) {
c = comandoS;
valido=7;
}
else if (strcmp(comandoS,"sms\n")== 0) {
c = comandoS;
valido=8;
}
else if (strcmp(comandoS,"sos\n")== 0) {
c = comandoS;
valido=9;
}
else if (strcmp(comandoS,"help\n")== 0) {
c = comandoS;
valido=10;
}
else if (strcmp(comandoS,"show\n")== 0) {
c = comandoS;
valido=11;
}
else if (strcmp(comandoS,"status\n")== 0) {
c = comandoS;
valido=12;
}
else if (strcmp(comandoS,"terminar\n")== 0) {
c = comandoS;
valido=-1;
}
else
valido=-2;
return valido;
}
/******************************************************************
* registarMovel: função para registar um novo telemóvel na rede *
* retorna um inteiro: 1 se for possível fazer o *
* registo -1 se já for excedido o número de *
* telemóveis permitidos e 2 se o número que se *
* pretende registar já foi registado anteriormente *
******************************************************************/
int _registarMovel(char numTelem[], int codPIN, int *i) {
int pos = *i;
// printf("teste e %s \n", numTelem);
rede[pos][0] = numTelem[0];
PIN[pos] = codPIN;
(*i)++;
return 1;
}
/******************************************************************
* ligarMovel: função para liga um telemóvel existente na rede *
* retorna um inteiro: 1 se for possível fazer a *
* tarefa 0 se o número de telemóvel não existe e *
* 2 se o PIN estiver errado
******************************************************************/
int _ligarMovel(char numTelem[], int codPIN) {
return 1;
}
/******************************************************************
* desligarMovel: *
******************************************************************/
int _desligarMovel(char numTelem[]) {
return 1;
}
/******************************************************************
* carregamento: *
******************************************************************/
int _carregamento(char numTele[], double valorCarregamento) {
char aux[8];
int valido=-1;
char *s;
int c;
printf("Digite o numero de telemóvel --> :");
s=fgets(aux,8,stdin);
if (*s == '\n')
printf("\nERRO: Numero de telemóvel não pode ser vazio\n");
else if ( (*s != '\n') && (s[1] == '1') ) {
valido=-2;
}
else {
strncpy(c, aux,8);
if ( validarNumeroMovel(c) ) {
valido=1;
}
else
printf("\nERRO: Numero de telemóvel só deve conter digitos\n");
}
printf("Digite o valor de carregamento --> :");
scanf("%e",&valorCarregamento);
if(valorCarregamento==0){
printf("\nErro! Valor de carregamento nao pode ser zero");
}
else if(valorCarregamento!=0){
printf("\nCarregamento efectuado com sucesso!",valorCarregamento);}
getchar();
return 1;
}
/******************************************************************
* dalSaldo: *
******************************************************************/
double _dalSaldo(char numTelem[]) {
printf ("||Numero de movel: %s\t||saldo: %.2f$00\t||estado:%d\n", lerMovel);
printf("ama");
getchar();
return 1;
}
/******************************************************************
* tmaSaldo:
******************************************************************/
int _tmaSaldo(char telemOrigem[], char numTelemDestino[], double valor) {
getchar();
return 1;
}
/******************************************************************
* chamada:
******************************************************************/
int _chamada(char numeroTelem[]) {
int c;
int valido=-1;
char aux[8];
char *s;
printf("Digite o numero de telemóvel --> :");
s=fgets(aux,8,stdin);
if (*s == '\n')
printf("\nERRO: Numero de telemóvel não pode ser vazio\n");
else if ( (*s != '\n') && (s[1] == '1') ) {
valido=-2;
}
else {
strncpy(c, aux,8);
if ( validarNumeroMovel(c) ) {
valido=1;
}
else
printf("\nERRO: Numero de telemóvel só deve conter digitos\n");
}
printf("Chamada a realizar...");
return 1;
}
/******************************************************************
* sms:
******************************************************************/
int _sms(char numeTelem[], char texto[]) {
return 1;
}
/******************************************************************
* chamarsos:
******************************************************************/
void _chamarsos() {
}
/******************************************************************
* ajuda:
******************************************************************/
void _ajuda() {
printf("\nAjuda: Para usar o programa deve usar os seguintes comandos: \n");
printf("\nregistar --->");
printf("\nligar");
printf("\ndesligar");
printf("\ncarregamento");
printf("\ndaSaldo");
printf("\ntmaSaldo");
printf("\nchamada");
printf("\nsms");
printf("\nsos");
printf("\nshow");
printf("\nstatus");
printf("\nterminar\n");
getchar();
}
/******************************************************************
* show:
******************************************************************/
void _show() {
}
/******************************************************************
* status:
******************************************************************/
void _status(char numTelem[]) {
}
/******************************************************************
* validarNumeroMovel:
******************************************************************/
int validarNumeroMovel(char *numero) {
int p=0;
int l = strlen(numero);
for(p=0; p < l; p++) {
if ( !isdigit(numero[p]) )
return 0;
}
return 1;
}
/******************************************************************
* lerMovel: *
******************************************************************/
int lerMovel(char *c) {
int valido=-1;
char aux[8];
char *s;
do {
printf("Digite o numero de telemóvel --> :");
s=fgets(aux,8,stdin);
if (*s == '\n')
printf("\nERRO: Numero de telemóvel não pode ser vazio\n");
else if ( (*s != '\n') && (s[1] == '1') ) {
valido=-2;
break;
}
else {
strncpy(c, aux,8);
if ( validarNumeroMovel(c) ) {
valido=1;
break;
}
else
printf("\nERRO: Numero de telemóvel só deve conter digitos\n");
}
while((c = getchar()) != '\n' && c != EOF) ;
}while(1);
return valido;
}
/******************************************************************
* lerPIN:
******************************************************************/
int lerPIN(int *pinLido) {
char c;
int aux=0;
int resp=0;
int contador=0;
do {
contador=0;
getchar();
printf("Digite o código PIN do telemóvel --> :");
resp=scanf(" %d", &aux);
if (resp == 1) {
while(aux != 0) {
aux /= 10; // n = n/10
++contador;
}
if (contador == 4) {
pinLido = &aux;
break;
}
else
printf("\nERRO: PIN do telemóvel deve ser 4 digitos\n:");
}
else if (resp == 0) {
while((c = getchar()) != '\n' && c != EOF) ;
printf("\nERRO: PIN do telemóvel deve ser 4 digitos:");
}
}while(1);
return contador;
}
/******************************************************************
* validarPin:
******************************************************************/
int validarPin(char numPin[]) {
return 1;
}
/******************************************************************
* procurarMovel:
******************************************************************/
int procurarMovel(char numero[]) {
return 0;
}
↧