Mudanças entre as edições de "Exercícios AValiação II"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(4 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 34: Linha 34:
  
 
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).
 
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
 +
 +
<syntaxhighlight lang=c>
 +
#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);
 +
}
 +
</syntaxhighlight>
  
 
QUESTÃO 2
 
QUESTÃO 2
Linha 63: 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));
}