Capitulo05 07 Exercicios
1245 palavras
5 páginas
Estruturas de DadosExercícios – Capítulos 5 e 7
6/4/2006
(c) Dept. Informática - PUC-Rio
1
Questão 1
6/4/2006
(c) Dept. Informática - PUC-Rio
2
Questão 1
/* Cálculo da média aritmética e da média harmônica */
#include <stdio.h>
/* Função medias */ void medias (int n, float* v, float* pA, float* pH)
{ float sA = 0; float sH = 0; int i; for(i=0;i<n;i++) { sA = sA + v[i]; sH = sH + 1/v[i];
}
*pA = sA/n;
*pH = n/sH;
}
6/4/2006
(c) Dept. Informática - PUC-Rio
3
Questão 1
/* Função principal (para teste) */ int main (void) { float v[] = {3.0, 10.0, 5.0, 3.0}; int n = 4; float pA, pH; medias(n, v, &pA, &pH); printf("%f %f\n", pA, pH); return 0;
}
6/4/2006
(c) Dept. Informática - PUC-Rio
4
Questão 2
6/4/2006
(c) Dept. Informática - PUC-Rio
5
Questão 2
/* Cálculo de somatório */ int* somatorios (int n, int* v)
{
int i; int *w;
/* alocação dinâmica */ w = (int*) malloc(n*sizeof(int)); w[0] = v[0]; for (i = 1; i < n; i++) w[i] = v[i] + w[i-1]; return w;
}
6/4/2006
(c) Dept. Informática - PUC-Rio
6
Questão 2
• Uso incorreto de apontador:
/* Cálculo de somatório */ int* somatorios (int n, int* v)
{
int i; int *w;
/* alocação dinâmica */ w = (int*) malloc(n*sizeof(int));
*w[0] = *v[0]; for (i = 1; i < n; i++)
*w[i] = *v[i] + *w[i-1]; return &w;
}
6/4/2006
(c) Dept. Informática - PUC-Rio
7
Questão 3
6/4/2006
(c) Dept. Informática - PUC-Rio
8
Questão 3
/* Última ocorrência de caractere em cadeia de caracteres */
#include <stdio.h>
#include <string.h> int ultima_ocorrencia (char* s, char c)
{
int i; int n = strlen(s);
/* comprimento da cadeia de entrada */ for (i=n-1; i!=-1; i--) /* s[0] é o primeiro caractere de s
*/
if (s[i] == c) break; /* s[n-1] é o último caractere de s
*/
return i;
/* saída do “for” com i=-1, se c não ocorre em s */
/* saída do “for” via “break” com s[i]==c
*/
}
6/4/2006
(c) Dept. Informática - PUC-Rio
9
Questão 3 int main (void)
{
char c; char cidade[] = "Rio de Janeiro"; printf("Entre com o caractere a