#include <stdio.h>
float calc_tarifa(int, int, int, int, int *);
int main(void)
{
int h1,h2,m1,m2, tempo;
printf("\nInforme a hr de entrada: ");
scanf("%d", &h1);
printf("\nInforme a min de entrada: ");
scanf("%d", &m1);
printf("\nInforme a hr de saída: ");
scanf("%d", &h2);
printf("\nInforme a min de saída: ");
scanf("%d", &m2);
printf("Valor a ser pago = R$ %2.2f", calc_tarifa(h1, m1, h2, m2, &tempo));
return 0;
}
float calc_tarifa(int h1, int m1, int h2, int m2, int *tempo)
{
int i;
float total;
if(m1 > 0) h1++;//se minutos forem maior que 0, serão arredondados
if(m2 > 0) h2++;
*tempo = h2-h1;
for(i=1; i<=*tempo; i++)
{
switch(i)
{
case 1:
total = 8.00;
break;
case 2:
total += 6.00;
break;
case 3:
total += 3.5;
break;
case 4:
total += 3.0;
break;
case 5:
total += 3.0;
break;
default:
total += 2.0;
break;
}
}
printf("\nVocê permaneceu %d hrs no estacionamento! \n", *tempo);
return total;
}
Exercício 2:
#include <stdio.h>//biblioteca para entrada/saída
#include <string.h>//biblioteca para manipulação de cadeia de caracteres
#include <stdlib.h>//biblioteca para funções acessar algumas funções do sistema, neste seu uso é para alocação dinâmica de memória
#define MAX 100//constante define o tamanho máximo de caracteres que podem ser inseridos no vetor
char * mesclar(char *, char *);
int main(void)
{
char original[MAX];//vetor original, ele quem armazena a palavra completa fornecida pelo usuário
int i, v1=0, v2=0;//variaveis de controle
char * pCp1, * pCp2;//ponteiros para a posição de memória dos vetores cp1, cp2[]
pCp1=malloc(MAX*sizeof(char));//alocando MAX memória para garantir que todas as letras serão armazenadas com sucesso
pCp2=malloc(MAX*sizeof(char));//alocando MAX memória para garantir que todas as letras serão armazenadas com sucesso
if(!pCp1 || !pCp2) printf("\n** ERRO : MEMÓRIA INSUFFICIENTE **");//verifica se não houve erro ao alocar a memória por falta de espaço
//exibindo msg na tela e capurando a entrada do usuário
printf("\nEntre com a palavra : ");
gets(original);//função própia para ler cadeia de caracters... gets armazena inclusive espaços em branco
/*
comando irá percorrer até o tamanho da palavra digitada (strlen), afim de dividir o vetor em outros
dois vetores. O vetor pCp1 armazena todas as letras que se encontram em indices pares. Já o vetor
pCp2 armazena todas as letras que se encontram em indices ímpares.
*/
for(i=0; i<strlen(original); i++)
{
if(i%2==0)
{
pCp1[v1] = original[i];
v1++;
}
else
{
pCp2[v2] = original[i];
v2++;
}
}
pCp1 = realloc(pCp1,v1*sizeof(char));//realocando a memória a fim de economizá-la
pCp2 = realloc(pCp2,v2*sizeof(char));//realocando a memória a fim de economizá-la
printf("%s", mesclar(pCp1, pCp2));//chamada da função para refazer as palavras
return 0;
}
char * mesclar(char * cp1, char * cp2)
{
int i, size, v1=0, v2=0;/* A variavel i, v1, v2 são controladoras... já a variavel size é responsável por indicar a soma
entre os tamanhos das cadeias de caracteres passadas por parametro.
*/
char * final;//Essa será a cadeia de caracteres final, ou seja, a mesma cadeia que foi digitada no inicia do programa
size = strlen(cp1)+strlen(cp2);//somando os tamanhos das cadeias distintas
final=malloc(size*sizeof(char));//alocando o espaço de memoria de acordo com o tamanho que a palavra possui
if(!final)
{
printf("\n** ERRO : MEMÓRIA INSUFFICIENTE **");//verifica se não houve erro ao alocar a memória por falta de espaço
return NULL;
}
else
{
for(i=0; i<size; i++)
{
if(i%2==0)
{
final[i] = cp1[v1];
v1++;
}
else
{
final[i] = cp2[v2];
v2++;
}
}
return final;
}
}