Mudanças entre as edições de "AREC PROG1 20151"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(5 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 181: Linha 181:
  
 
{{collapse top|Correção}}
 
{{collapse top|Correção}}
 +
 +
;Questão 1
  
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
Linha 204: Linha 206:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
;Questão 2
 +
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
#define TAM 10
 +
 +
void troca(int *p_anterior,int *p_proximo);
 +
 +
void main()
 +
{
 +
int num[TAM];
 +
int i,trocou=1;
 +
for(i=0;i<TAM;i++){
 +
printf("\nDigite o numero %d: ",i+1);
 +
scanf("%d",&num[i]);
 +
}
 +
while(trocou){
 +
trocou=0;
 +
for(i=0;i<(TAM-1);i++){
 +
if(num[i]>num[i+1]){
 +
  troca(&num[i],&num[i+1]);
 +
  trocou=1;
 +
}
 +
}
 +
}
 +
for(i=0;i<TAM;i++){
 +
printf("\n%d\n",num[i]);
 +
}
 +
}
 +
 +
void troca(int *p_anterior,int *p_proximo){
 +
int aux;
 +
aux=*p_anterior;
 +
*p_anterior=*p_proximo;
 +
*p_proximo=aux;
 +
}
 +
</syntaxhighlight>
 +
 +
;Questão 3
 +
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
#define NUM_MAX_MEDIDAS 12
 +
#define NOME_ARQ "dados_dia.txt"
 +
 +
struct Tmedida{
 +
        int hora;
 +
        float temperatura;
 +
        char nm_estacao[30];
 +
};
 +
 +
float temperatura_maxima(struct Tmedida[], int num_med);
 +
float temperatura_media(struct Tmedida[], int num_med);
 +
float temperatura_minima(struct Tmedida[], int num_med);
 +
 +
void main()  {
 +
  int k, n, num_medidas;
 +
  float saida_proc;
 +
  FILE *fp;
 +
 +
  struct Tmedida dia1[NUM_MAX_MEDIDAS];
 +
 
 +
  fp = fopen(NOME_ARQ,"r");
 +
  if (fp == NULL)  {
 +
    printf("Erro ao abrir arquivo: %s.\n", NOME_ARQ);
 +
    return;
 +
  }
 +
 +
  k=0;
 +
  while(1)  {
 +
    n=fscanf(fp, "%d %f %s", &dia1[k].hora, &dia1[k].temperatura, dia1[k].nm_estacao);
 +
    if (n==EOF)
 +
      break;
 +
    k++;
 +
  }
 +
  num_medidas=k;
  
 +
  printf("===Arquivo: %s===\n",NOME_ARQ);
 +
  printf("\nResultado do Processamento:\n");
  
 +
  printf("\nMedidas: %d",num_medidas);
  
 +
  printf("\n Minima: %0.1f\n\n",temperatura_minima(dia1, num_medidas));
 +
  printf("\n  Media: %0.1f\n",temperatura_media(dia1, num_medidas));
 +
  printf("\n\n Maxima: %0.1f\n",temperatura_maxima(dia1, num_medidas));
 +
  fclose(fp);
 +
}
 +
 +
float temperatura_maxima(struct Tmedida med_dia[], int nmed)  {
 +
  int k;
 +
  float tpmax=0;
 +
  for (k=0;k<nmed;k++)  {
 +
    if (med_dia[k].temperatura > tpmax)  {
 +
      tpmax = med_dia[k].temperatura;
 +
    }
 +
  }
 +
  return(tpmax);
 +
}
 +
 +
float temperatura_media(struct Tmedida med_dia[], int nmed)  {
 +
  int k;
 +
  float tpmed=0;
 +
  for (k=0;k<nmed;k++)  {
 +
        tpmed += med_dia[k].temperatura;
 +
    }
 +
  return(tpmed/nmed);
 +
}
 +
 +
float temperatura_minima(struct Tmedida med_dia[], int nmed)  {
 +
  int k;
 +
  float tpmin=100;
 +
  for (k=0;k<nmed;k++)  {
 +
    if (med_dia[k].temperatura < tpmin)  {
 +
      tpmin = med_dia[k].temperatura;
 +
    }
 +
  }
 +
  return(tpmin);
 +
}
 +
</syntaxhighlight>
 
{{collapse bottom}}
 
{{collapse bottom}}

Edição atual tal como às 10h18min de 3 de julho de 2015

Avaliação de Recuperação

Instruções:

A avaliação de recuperação é prática, sem consulta e sem internet. Os telefones deverão permanecer desligados durante todo o período da prova. Não deverá haver comunicação entre os alunos qualquer que seja. No início da prova os alunos deverão desconectar seus computadores da rede. Ao final, o aluno deverá conectar seu computador a rede e enviar os arquivos correspondentes aos programas desenvolvidos. É importante trazer um pendrive, caso haja problema com a rede. Sugere-se que estes “arquivos.c” possuam uma linha comentada com o nome do aluno. Todos farão a prova na quinta-feira e terão 3 (três) horas para realização da mesma. Ainda, a prova se inciará as 13h30min e se encerará as 16h30min do dia 02/07/2015.


1) Implementar um programa em linguagem C que conte o número de caracteres 'a' e 'o' de uma string lida pelo teclado e mostre o resultado na tela. Complete o código abaixo ou faça um novo programa se preferir. (2 pontos)

// Programa: prec1.c
// Aluno:
#include <stdio.h>

#define TAM 20

void main()
{
	char texto[TAM];
	int i,conta_a=0,conta_o=0;

	[...]

	printf("\nTotal de a: %d",conta_a);
	printf("\nTotal de o: %d\n",conta_o);
}


2) Implementar um programa em linguagem C que leia um vetor de 10 números inteiros e coloque em ordem crescente, apresentando o resultado na tela. Complete o código abaixo ou faça um novo programa se preferir. (2 pontos)

// Programa: prec2.c
// Aluno:
#include <stdio.h>

#define TAM 10

void troca(int *p_anterior,int *p_proximo);

void main()
{
	int num[TAM];
	int i,trocou=1;
	for(i=0;i<TAM;i++){
		printf("\nDigite o numero %d: ",i+1);
		scanf("%d",..);
	}
	while(trocou){
		trocou=0;
		for(..;i<(TAM-1);..){
			if(..){
			   troca(..,..);
			   trocou=1;
			}
		}
	}
	for(i=0;i<TAM;i++){
		printf("\n%d\n",...);
	}
}

void troca(int *p_anterior,int *p_proximo){
	int aux;
	aux=..;
	*p_anterior=..;
	*p_proximo=..;
}


3) O código-fonte abaixo, deve fazer a leitura de dados a partir de um arquivo, também abaixo, e informar qual a temperatura máxima, mínima e média e a quantidade de leituras realizadas. Você vai precisar criar o arquivo de dados e gravar no mesmo diretório do programa. Você terá que completar o código e podem existir erros de sintaxe, estrutura e de lógica. Faça o programa funcionar corretamente. Lembre-se você pode fazer um programa todo novo ou utilizar esse que foi passado. (6 pontos)

Exemplo de Saída:

Arquivo: dados_dia.dat

Resultado do processamento:

Medidas de Temperatura: 12

Minima: Media : Maxima:

================

</syntaxhighlight>


Código-fonte:

// Programa: prec1.c
// Aluno:
#include <stdio.h>

#define NUM_MAX_MEDIDAS 12
#define NOME_ARQ "*.dat"

struct Tmedida{
   int hora;
   float temperatura;
   char nm_estacao[30];
};

float temperatura_maxima(struct Tmedida[], int num_med);
float temperatura_media(struct Tmedida[], int num_med);
float temperatura_minima(struct Tmedida[], int num_med);

void main()  {
  int k, n, num_medidas;
  float saida_proc;
  FILE *fp;

  struct Tmedida dia1[NUM_MAX_MEDIDAS];
  
  fp = fopen(NOME_ARQ,"r");
  if (fp == NULL)  {
    printf("Erro ao abrir arquivo: %s.\n", NOME_ARQ);
    return;
  }

  k=0;
  while(1)  {
    n=fscanf(fp, "%d %f %s", , , );
    if (n==EOF)
      break;
    k++;
  }
  num_medidas=k; 

  printf("===Arquivo: %s===\n",NOME_ARQ);
  printf("\nResultado do Processamento:\n");

  printf("\nMedidas: %d",num_medidas);

  printf("\n Minima: %0.1f\n\n",temperatura_minima(,)); 
  printf("\n  Media: %0.1f\n",temperatura_media(,));
  printf("\n\n Maxima: %0.1f\n",temperatura_maxima(,));
  fclose(fp);
}

float temperatura_maxima(struct Tmedida med_dia[], int nmed)  {
  int k;
  float tpmax=0;

  return(tpmax);
}

float temperatura_media(struct Tmedida med_dia[], int nmed)  {
  int k;
  float tpmed=0;

  return(tpmed/nmed);
}

float temperatura_minima(struct Tmedida med_dia[], int nmed)  {
  int k;
  float tpmin=100;

  return(tpmin);
}


Arquivo de dados:

8  17.3  FLN_CENTRO
8  15.2  FLN_TRINDADE
10 19.8  FLN_CENTRO
11 22.7  FLN_TRINDADE
14 26.3  FLN_CENTRO
16 25.3  FLN_CENTRO
17 25.3  FLN_CENTRO
18 21.9  FLN_CENTRO
19 28.1  FLN_CENTRO
20 14.3  FLN_TRINDADE
22 13.9  FLN_TRINDADE
23 12.7  FLN_TRINDADE
Correção
Questão 1
#include <stdio.h>

#define TAM 20

void main()
{
	char texto[TAM];
	int i,conta_a=0,conta_o=0;
	printf("\nDigite uma string: ");
	scanf("%s",texto);
	for(i=0;i<TAM;i++){
		if(texto[i]=='a')
			conta_a++;
		if(texto[i]=='o')
			conta_o++;
	}
	printf("\nTotal de a: %d",conta_a);
	printf("\nTotal de o: %d\n",conta_o);
}
Questão 2
#include <stdio.h>

#define TAM 10

void troca(int *p_anterior,int *p_proximo);

void main()
{
	int num[TAM];
	int i,trocou=1;
	for(i=0;i<TAM;i++){
		printf("\nDigite o numero %d: ",i+1);
		scanf("%d",&num[i]);
	}
	while(trocou){
		trocou=0;
		for(i=0;i<(TAM-1);i++){
			if(num[i]>num[i+1]){
			   troca(&num[i],&num[i+1]);
			   trocou=1;
			}
		}
	}
	for(i=0;i<TAM;i++){
		printf("\n%d\n",num[i]);
	}
}

void troca(int *p_anterior,int *p_proximo){
	int aux;
	aux=*p_anterior;
	*p_anterior=*p_proximo;
	*p_proximo=aux;
}
Questão 3
#include <stdio.h>

#define NUM_MAX_MEDIDAS 12
#define NOME_ARQ "dados_dia.txt"

struct Tmedida{
         int hora;
         float temperatura;
         char nm_estacao[30];
};

float temperatura_maxima(struct Tmedida[], int num_med);
float temperatura_media(struct Tmedida[], int num_med);
float temperatura_minima(struct Tmedida[], int num_med);

void main()  {
  int k, n, num_medidas;
  float saida_proc;
  FILE *fp;

  struct Tmedida dia1[NUM_MAX_MEDIDAS];
  
  fp = fopen(NOME_ARQ,"r");
  if (fp == NULL)  {
    printf("Erro ao abrir arquivo: %s.\n", NOME_ARQ);
    return;
  }

  k=0;
  while(1)  {
    n=fscanf(fp, "%d %f %s", &dia1[k].hora, &dia1[k].temperatura, dia1[k].nm_estacao);
    if (n==EOF)
      break;
    k++;
  }
  num_medidas=k; 

  printf("===Arquivo: %s===\n",NOME_ARQ);
  printf("\nResultado do Processamento:\n");

  printf("\nMedidas: %d",num_medidas);

  printf("\n Minima: %0.1f\n\n",temperatura_minima(dia1, num_medidas)); 
  printf("\n  Media: %0.1f\n",temperatura_media(dia1, num_medidas));
  printf("\n\n Maxima: %0.1f\n",temperatura_maxima(dia1, num_medidas));
  fclose(fp);
}

float temperatura_maxima(struct Tmedida med_dia[], int nmed)  {
  int k;
  float tpmax=0;
  for (k=0;k<nmed;k++)  {
    if (med_dia[k].temperatura > tpmax)  {
      tpmax = med_dia[k].temperatura;
    }
  }
  return(tpmax);
}

float temperatura_media(struct Tmedida med_dia[], int nmed)  {
  int k;
  float tpmed=0;
  for (k=0;k<nmed;k++)  {
         tpmed += med_dia[k].temperatura;
    }
  return(tpmed/nmed);
}

float temperatura_minima(struct Tmedida med_dia[], int nmed)  {
  int k;
  float tpmin=100;
  for (k=0;k<nmed;k++)  {
    if (med_dia[k].temperatura < tpmin)  {
      tpmin = med_dia[k].temperatura;
    }
  }
  return(tpmin);
}