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

De MediaWiki do Campus São José
Ir para: navegação, pesquisa
(Instruções:)
 
(8 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 92: Linha 92:
  
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
 +
// Programa: prec1.c
 +
// Aluno:
 
#include <stdio.h>
 
#include <stdio.h>
  
Linha 177: Linha 179:
 
  22 13.9  FLN_TRINDADE
 
  22 13.9  FLN_TRINDADE
 
  23 12.7  FLN_TRINDADE
 
  23 12.7  FLN_TRINDADE
 +
 +
{{collapse top|Correção}}
 +
 +
;Questão 1
 +
 +
<syntaxhighlight lang=c>
 +
#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);
 +
}
 +
</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}}

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);
}