Buscar

Prova P1 Stemmer

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Projeto e Planejamento de Experimentos para Eletroˆnica
Prova1 - 29/04/2014 Soluc¸a˜o
1. (2 pontos) Escreva uma func¸a˜o em Linguagem C que calcula a a´rea de um triaˆngulo, recebendo como
paraˆmetro o comprimento dos 3 lados a, b, c. Esta func¸a˜o deve ter o seguinte proto´tipo:
double AreaTri(double a, double b, double c);
Esta func¸a˜o deve retornar a a´rea de um triaˆngulo com lados a, b, c. O ca´lculo da a´rea deve ser feito
usando a fo´rmula de Heron:
area =
√
p(p− a)(p− b)(p− c) (1)
Onde p e´ o semiper´ımetro:
p =
a+ b+ c
2
(2)
Se o termo p(p − a)(p − b)(p − c) ficar negativo, a func¸a˜o deve retornar o resultado -1 antes de tentar
calcular a raiz quadrada.
Soluc¸a˜o
#include <math.h>
double AreaTri(double a, double b, double c)
{
double p;
p = (a + b + c)/2;
p = p*(p - a)*(p - b)*(p - c);
return p < 0? -1.0: sqrt(p);
}
2. (2 pontos) Escreva um programa principal, que usa a func¸a˜o da questa˜o anterior para calcular a a´rea de um
triaˆngulo. Este programa deve receber os tres comprimentos dos lados do triaˆngulo na linha de comando.
Se faltarem palavras na linha de comando o programa deve escrever uma mensagem de erro dizendo qual
e´ a sintaxe esperada e terminar. Tendo pelo menos 4 palavras na linha de comando, o programa deve
converter os argumentos para nu´meros tipo double e usa-los como paraˆmetros na chamada da func¸a˜o
AreaTri. No final o programa deve escrever uma mensagem informando a a´rea. Se a func¸a˜o retornou -1,
o programa deve escrever uma mensagem dizendo que o triaˆngulo e´ inva´lido em vez de informar a a´rea.
Soluc¸a˜o
int main(int argc, char **argv)
{
if(argc < 4) {
fprintf(stderr, "Sintaxe:\n%s <a> <b> <c>\n", argv[0]);
return -1;
}
printf("\nArea = %lf\n", AreaTri(atof(argv[1]), atof(argv[2]), atof(argv[3])));
return 0;
}
3. (2 pontos) Os nomes de arquivos em MSDOS ou em Windows costumam ter uma extenc¸a˜o formada por
um ponto e elgumas letras no final que indica qual e´ o tipo deste arquivo. Escreva uma func¸a˜o chamada
SeparaExt com o seguinte proto´tipo:
char *SeparaExt(char *nomearq);
Esta func¸a˜o recebe um string que representa um nome de arquivo e procura pelo ponto que separa a parte
principal do nome do arquivo da extenc¸a˜o. O valor retornado deve ser um apontador para o local onde
o ponto foi encontrado. Se na˜o houver nenhum ponto no nome do arquivo, a func¸a˜o deve retornar um
apontador para o caractere nulo do fim de string.
1
Algoritmo recomendado
• Inicializar o apontador apontando para o final da string nomearq
• Percorrer a string verificado se o caractere e´ um ponto. Se for, registrar o local onde foi encontrado
no apontador
• Terminar retornando o apontador
Soluc¸a˜o
char *SeparaExt(char *nomearq)
{
char *ext;
for(ext = nomearq; *ext; ext++);
while(*nomearq) {
if(*nomearq == ’.’) ext = nomearq;
nomearq++;
}
return ext;
}
4. (2 pontos) Escreva um programa principal para testar a func¸a˜o SeparaExt da questa˜o anterior. Este
programa deve receber o nome do arquivo na linha de comando. Se faltar o nome do arquivo na linha
de comando, o programa deve solicitar que seja fornecido pelo usua´rio atrave´s de um dia´logo interativo.
Enta˜o o programa deve escrever uma mensagem mostrando qual e´ a exte´nc¸a˜o do arquivo. Para isto deve
usar a func¸a˜o SeparaExt.
Soluc¸a˜o
int main(int argc, char **argv)
{
char nomearq[80];
char *ext;
if(argc < 2) {
printf("Nome do arquivo = ");
scanf("%80s", nomearq);
ext = SeparaExt(nomearq);
}
else ext = SeparaExt(argv[1]);
printf("\nExtencao = %s\n", ext);
return 0;
}
5. (2 ponros) O programa a seguir chama-se escrevemai.c. Mostre qual e´ o comando que se usa para
compilar este programa usando o gcc para gerar um executa´vel chamado escrevemai.exe. Informe como
este programa pode ser usado para listar o arquivo escrevemai.c convertendo as letras para maiu´sculas.
#include <stdio.h>
int main(void)
{
int c;
while((c=getchar())!=-1) {
if(c >= ’a’ && c <= ’z’) c += (’A’-’a’);
putchar(c)
}
return 0;
}
Soluc¸a˜o
gcc -Wall -o escrevemai.exe escrevemai.c
escrevemai < escrevemai.c
2

Outros materiais