AREC PROG1 20151

De MediaWiki do Campus São José
Revisão de 09h43min de 3 de julho de 2015 por Douglas (discussão | contribs) (Instruções:)
Ir para: navegação, pesquisa

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