Mudanças entre as edições de "Exercícios AValiação II"
(3 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 52: | Linha 52: | ||
} | } | ||
− | + | int plot_fig(int linhas, int numcar, char caracter1, char caracter2, char caracter3) | |
{ | { | ||
int i; | int i; | ||
+ | if (linhas<0 || numcar <0) | ||
+ | return -1; | ||
for(i=1;i<=linhas;i++) | for(i=1;i<=linhas;i++) | ||
− | imp_linha(i, numcar, caracter2, caracter3, caracter1); | + | imp_linha(i, numcar, caracter2, caracter3, caracter1); |
+ | return 0; | ||
} | } | ||
main() | main() | ||
{ | { | ||
− | plot_fig(10,8,'X','Y','Z'); | + | int ret; |
+ | |||
+ | ret = plot_fig(10,8,'X','Y','Z'); | ||
+ | printf("Código de erro %d\n", ret); | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 94: | Linha 100: | ||
} | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | SOLUÇÃO PARCIAL - não comparar (operador de igualdade) duas expressões float diretamente... | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | /* calcula a média do vetor passado como parâmetro e cujo tamanho é fornceido*/ | ||
+ | |||
+ | float mediaVetor(int vetor[], int tamanho) | ||
+ | { | ||
+ | float media, soma; | ||
+ | int i; | ||
+ | |||
+ | soma=0; | ||
+ | for(i=0;i<tamanho;i++) | ||
+ | soma = soma + vetor[i]; | ||
+ | media = soma / tamanho; | ||
+ | return media; | ||
+ | } | ||
+ | |||
+ | |||
+ | /* esta função deve usar a função acima. Ela deve comparar a média dos vetores | ||
+ | passados como parâmetro e retornar 1,0 ou -1 se a média do primeiro for maior, | ||
+ | igual ou menor que o segundo vetor */ | ||
+ | |||
+ | int comparaMediaVetores(int vetor1[], int vetor2[], int tamanho) | ||
+ | { | ||
+ | float media1, media2; | ||
+ | |||
+ | media1 = mediaVetor(vetor1,tamanho); | ||
+ | media2 = mediaVetor(vetor2,tamanho); | ||
+ | |||
+ | } | ||
+ | |||
+ | main() | ||
+ | { | ||
+ | int x[5] = {2,10,2,10,2}; | ||
+ | int y[5] = {2,4,3,4,2}; | ||
+ | |||
+ | printf("retorno = %d\n", comparaMediaVetores(x,y,5)); | ||
+ | } | ||
</syntaxhighlight> | </syntaxhighlight> |
Edição atual tal como às 17h02min de 6 de outubro de 2014
QUESTÃO 1
Usando o comando for, implemente uma função da forma:
int plot_fig(int linhas, int numcar, char caracter1, char caracter2, char caracter3)
Se a função for chamada da forma:
plot_fig (8,9,'a','B','c');
ela deve produzir:
caaaaaaaaaB
ccaaaaaaaaaB
cccaaaaaaaaaB
ccccaaaaaaaaaB
cccccaaaaaaaaaB
ccccccaaaaaaaaaB
cccccccaaaaaaaaaB
ccccccccaaaaaaaaaB
Cada linha da figura deve ser gerada com uma função:
void printLinha(int numcar1, int numcar2, char caracter1, char caracter2, char caracter3)
Se houver inconsistência nos parâmetros retornar um código de erro -1 senão retornar 0. A inconsistência é dada por uma linha negativa ou por numcar negativo (ou ambos).
Solução
#include <stdio.h>
void imp_linha(int num_car1, int num_car2, char car1, char car2, char car3)
{
int i;
for(i=0;i<num_car1;i++)
printf("%c", car1);
for(i=0;i<num_car2;i++)
printf("%c", car2);
printf("%c\n", car3);
}
int plot_fig(int linhas, int numcar, char caracter1, char caracter2, char caracter3)
{
int i;
if (linhas<0 || numcar <0)
return -1;
for(i=1;i<=linhas;i++)
imp_linha(i, numcar, caracter2, caracter3, caracter1);
return 0;
}
main()
{
int ret;
ret = plot_fig(10,8,'X','Y','Z');
printf("Código de erro %d\n", ret);
}
QUESTÃO 2
Implementar duas funções que operam sobre vetores de inteiros da seguinte forma:
/* calcula a média do vetor passado como parâmetro e cujo tamanho é fornceido*/
float mediaVetor(int vetor[], int tamanho)
{
}
/* esta função deve usar a função acima. Ela deve comparar a média dos vetores
passados como parâmetro e retornar 1,0 ou -1 se a média do primeiro for maior,
igual ou menor que o segundo vetor */
int comparaMediaVetores(int vetor1[], int vetor2[], int tamanho)
{
}
main()
{
/* mostrar um exemplo de funcionamento das funções acima */
/* declare dois vetores inicializados aqui */
}
SOLUÇÃO PARCIAL - não comparar (operador de igualdade) duas expressões float diretamente...
#include <stdio.h>
/* calcula a média do vetor passado como parâmetro e cujo tamanho é fornceido*/
float mediaVetor(int vetor[], int tamanho)
{
float media, soma;
int i;
soma=0;
for(i=0;i<tamanho;i++)
soma = soma + vetor[i];
media = soma / tamanho;
return media;
}
/* esta função deve usar a função acima. Ela deve comparar a média dos vetores
passados como parâmetro e retornar 1,0 ou -1 se a média do primeiro for maior,
igual ou menor que o segundo vetor */
int comparaMediaVetores(int vetor1[], int vetor2[], int tamanho)
{
float media1, media2;
media1 = mediaVetor(vetor1,tamanho);
media2 = mediaVetor(vetor2,tamanho);
}
main()
{
int x[5] = {2,10,2,10,2};
int y[5] = {2,4,3,4,2};
printf("retorno = %d\n", comparaMediaVetores(x,y,5));
}