Nome do aluno: Turma:
Assinatura:
Professor(a):
N
USP:
Curso:
Instruções:
Questão | Nota |
1 | |
2 | |
3 | |
Total |
Questão 1 (valor: 3.0)
Simule a execução do programa abaixo destacando a sua saída (o que vai sair na tela). Dados de entrada (a serem lidos):
7 3 6 1 4 7 8 5
/*************************************************************/ #include <stdio.h> #define NMAX 100 void leia_vetor(int v[], int n); void imprima_vetor(int v[], int n); int eh_alternante(int v[], int n); void min_max(int v[], int n, int *pmin, int *pmax); /*************************************************************/ int main() { int a[NMAX]; int n, menor, maior; scanf("%d", &n); leia_vetor(a, n); imprima_vetor(a, n); if (eh_alternante(a, n)) printf("A sequencia dada e' alternante.\n"); else printf("A sequencia dada nao e' alternante.\n"); min_max(a, n, &menor, &maior); printf("Menor = %d Maior = %d\n", menor, maior); return 0; } /*************************************************************/ void leia_vetor(int v[], int n) { int i; for (i = 0; i < n; i++) scanf("%d", &v[i]); } void imprima_vetor(int v[], int n) { int i; printf("Os elementos da sequencia sao: "); for (i = 0; i < n; i++) printf("%d ", v[i]); printf("\n"); } int eh_alternante(int v[], int n) { int i, p; for (i = 0; i < n - 1; i++) { p = v[i] + v[i + 1]; printf("%d: %d\n", i, p); if (p % 2 == 0) return 0; } return 1; }
void min_max(int v[], int n, int *pmin, int *pmax) { int i; *pmin = v[0]; *pmax = v[0]; for (i = 1; i < n; i++) { if (v[i] < *pmin) *pmin = v[i]; if (v[i] > *pmax) *pmax = v[i]; printf("[%d: %d %d]\n", i, *pmin, *pmax); } } /*************************************************************/
Questão 2 (valor: 3.0)
Dizemos que uma matriz inteira é -crescente se essa matriz tem a seguinte propriedade: seus elementos são números inteiros positivos menores ou iguais a , e estes crescem estritamente ao longo de cada linha, da esquerda para a direita. No exemplo abaixo temos uma matriz -crescente:
4 7 8 10 17 28 2 3 5 8 15 25 8 10 14 16 20 48 7 8 9 12 18 45Note que cada linha está ordenada crescentemente de maneira estrita.
int eh_crescente(int v[], int n);que verifica se os n elementos do vetor fornecido v[] estão em ordem estritamente crescente, isto é, se
v[0] < v[1] < ... < v[n-1]A sua função deve devolver 1 se v[] estiver em ordem estritamente crescente, e deve devolver 0 caso contrário.
int eh_K_crescente(int a[][NMAX], int m, int n, int K);que verifica se a matriz m x n fornecida a é K-crescente. Neste item, você deve usar a função eh_crescente() acima, mesmo que você não a tenha escrito.
4 6 2 3 5 8 15 25 4 7 8 10 17 28 8 10 14 16 20 48 7 8 9 12 18 45 50(Note que e são fornecidos pelo usuário.) Então, o seu programa deve determinar que de fato a matriz dada é -crescente e deve também determinar que ela é também -crescente, mas não é -crescente. A saída deve ser algo como
Matriz eh 50-crescente. Matriz eh tambem 48-crescente, mas nao eh 47-crescente.Neste item, você deve usar a função eh_K_crescente() acima, mesmo que você não a tenha escrito.
Questão 3 (valor: 4.0)
Um polinômio real de grau no máximo é dado por
Observe que um tal polinômio pode ser representado por um vetor, digamos p[0..n] (naturalmente, o elemento p[0] do vetor contém o valor do coeficiente , o elemento p[1] do vetor contém o valor do coeficiente , e assim por diante).
void leia_pol(double p[], int n);que lê os coeficientes de um polinômio . Se o usuário quiser fornecer o polinômio , a entrada que ele fornecerá será
3 1 2 0 -1Note que estamos supondo que o usuário fornecerá o grau do polinômio explicitamente (o inteiro 3 acima).
void imprima_pol(double p[], int n);que imprime os coeficientes do polinômio de grau n representado no vetor p[]. Se é como no exemplo acima, a sua função deve imprimir algo como
grau: 3 coeficientes: 1 2 0 -1
double valor(double p[], int n, double x);que recebe em p[] (os coeficientes) de um polinômio , em n o grau deste polinômio, e em x um número real, e que devolve o valor de calculado neste número real.
3 1 2 0 -1 4 0 0.5 1 2e a saída deverá ser
grau: 3 coeficientes: 1 2 0 -1 p(0) = 1 p(0.5) = 1.875 p(1) = 2 p(2) = -3
Observação. Nesta questão, você deve supor que todos polinômios têm grau no máximo 999.