Mudanças entre as edições de "AREC PROG1 20151"
Linha 299: | Linha 299: | ||
int k; | int k; | ||
float tpmax=0; | float tpmax=0; | ||
− | for (k=0;k<nmed | + | for (k=0;k<nmed;k++) { |
if (med_dia[k].temperatura > tpmax) { | if (med_dia[k].temperatura > tpmax) { | ||
tpmax = med_dia[k].temperatura; | tpmax = med_dia[k].temperatura; | ||
Linha 310: | Linha 310: | ||
int k; | int k; | ||
float tpmed=0; | float tpmed=0; | ||
− | for (k=0;k<nmed | + | for (k=0;k<nmed;k++) { |
tpmed += med_dia[k].temperatura; | tpmed += med_dia[k].temperatura; | ||
} | } | ||
Linha 319: | Linha 319: | ||
int k; | int k; | ||
float tpmin=100; | float tpmin=100; | ||
− | for (k=0;k<nmed | + | for (k=0;k<nmed;k++) { |
if (med_dia[k].temperatura < tpmin) { | if (med_dia[k].temperatura < tpmin) { | ||
tpmin = med_dia[k].temperatura; | tpmin = med_dia[k].temperatura; |
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);
}