Avaliação – 2 – 03/12/2016 Disciplina Lógica de Programação Prof. Wagner dos Santos C. de Jesus
Curso de Engenharias Questões 1) Responda as questões abaixo (0,3).
a) O que vem a ser um ponteiro.
R: Vem a ser uma variável que tem a finalidade de apontar para um endereço na memória.
b) Qual a finalidade dos símbolos de chaves { } em um programa c. R: Delimita a sequencia de instruções que serão executadas dentro de uma estrutura.
c) Qual a finalidade da função main().
R: A função main() será a primeira função a ser chamada quando um programa C é executado.
2) Analise o trecho de programa abaixo e escreva os valores de suas saídas ou eventuais erros se houverem (0,5).
int a = 3; int b = 5; int k; char str[30] = "Morango"; float c = 1.75; k = a/b; int d = c; int x = a >= b; int p = 9 - (++a); int p2 = 9 - (a--); printf("a = %d\n",a); printf("c = %0.3f\n",c); printf("k = %d\n",k); printf("d = %d\n",d); printf("str = %c\n",str[2]); printf("x = %d\n",x); printf("p = %d\n",p); printf("p2 = %d\n",p2); R: a = 3 c = 1.750 k = 0 d = 1
3) Observe o fluxograma abaixo. (0,5).
a) Faça o teste de mesa do fluxograma considerando os valores iniciais das variáveis todas inteiras n = 3; ra = (45,66,69); n1 = (5,3,8); n2 = (3,4,6) .
Continuação da questão - 3
b) Escreva o algoritmo baseado no fluxograma acima. Var
n,ra, ra_maior : Inteiro n1, n2, maior, m : flutuante Inicio
ra_maior = 0 maior =0; leia(n)
para i de 1 ate n faça leia(ra) leia(n1) leia(n2) m = (n1+n2)/2 se(m > maior) maior = m ra_maior = ra fim_se fim_para escreva (ra_maior) escreva (maior) fim
c) Escreva a codificação em C para o fluxograma. #include <stdio.h> #include <stdlib.h> main() { int n; float n1; float n2; float m=0; int ra; float maior=0; int ra_maior = 0; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&ra); scanf("%f",&n1); scanf("%f",&n2); m = (n1 + n2)/2; if(m > maior) { maior = m; ra_maior = ra; } }
printf("RA = %d Maior nota = %2.2f ",ra_maior,maior); }
4) Escrever um algoritmo que dada uma seqüência de (n) números positivos e inteiros pelo teclado, selecionar quantos deles são primos e quantos não são (1,5).
R:Var N : Inteiro num:Inteiro quant,primo : Inteiro inicio quant = 0 leia(n)
para i de 1 ate n faça leia(num)
primo = 0;
para j de 1 ate num faça se( num % j = 0) primo = primo + 1 fim-se
fim-para se(primo==2)
5) José precisava calcular a área do trapézio representado pelo gráfico abaixo, mas não conhecia as alturas do trapézio, no entanto, José sabia que a função para traçar o gráfico era f(x) = ex e o intervalo era [a,b] conhecido, que possibilita, o uso da integral abaixo (1,0).
x
b
a
[
b
a
]
b
a
x
e
e
e
e
Você deve escrever um programa em C que dados os valores de a e b calcular a ante derivada representada pela função que traça o gráfico acima. R: #include <stdio.h> #include <stdlib.h> #include <math.h> main() { float a; float b; float fx; scanf("%f",&a); scanf("%f",&b); fx = exp(b) - exp(a); printf("Integral = %0.3f ",fx); }
6) Fazer um programa que lê uma string qualquer de no máximo 80 caracteres e imprima (1,0):
a) Quantos caracteres têm a string.
b) Quantos caracteres são maiúsculos e minúsculos. R: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <cctype> main() { char palavra[80]; char t[1]; char p[1]; char s; gets(palavra); int conta_num =0; int x = strlen(palavra); int conta_mais = 0; for(int i=0;i<=x-1;i++) { s = palavra[i]; if(palavra[i] != ' '){ t[0] = toupper(palavra[i]); p[0] = palavra[i]; if(p[0] == t[0] ) conta_mais++; } } printf("Quantidade de caracteres %d\n",x); int minus = x - conta_mais;
printf("Maiusculas = %d \n",conta_mais); printf("Minusculas = %d \n",minus); }
7) Faça o teste de mesa do programa abaixo. Considere a variável n = 1000111 (2,0). #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> main() {
char nume [10][10]={"zero","um","dois","tres","quatro", "cinco","seis","sete","oito","nove"}; char bin[8]; char c[2]; int dec=0; int e=0; scanf("%s",&bin); int x = strlen(bin)-1; int k = x; for(int i=0;i<=x;i++){ c[0] = bin[k]; int y = atoi(c); int d = pow(2,e)*y; dec += d; k--; e++; }
int num = dec / 10; int r = dec % 10;
printf("%s = %s\n",nume[num],nume[r]); }
8) Escrever um algoritmo e o fluxograma que permita a entrada pelo teclado de uma matriz (4x4) com números inteiros e positivos mostrar o elemento da diagonal secundária (1,2).
R: #include <stdio.h> #include <stdlib.h> main() { int m[4][4]; for(int i=0;i<=3;i++){ for(int j=0;j<=3;j++){ scanf("%d",&m[i][j]); } } int j = 3; for(int i=0;i<=3;i++){ printf("%d\n",m[i][j]); j--; } }
9) {Marta,Claudia,Solange,Flavia} eram muito amigas e com certa freqüência todas gostavam da vida social noturna e para ir as festas tiveram uma boa idéia, como todas possuíam a mesma estatura física, podem usar, uma o sapato da outra, realizando um sistema de permutação para que não haja gasto de dinheiro, comprando sapatos para cada festa. Você deve escrever o fluxograma o algoritmo e o programa em C que permita entrar com os nomes e realiza as combinações necessárias para que elas possam saber de quem irão emprestar os sapatos (3,0).
Observação: A solução deverá ser apresentar com as restrições abaixo.
a) O algoritmo não poderá exceder a 10 linhas de código.
b) Deverá ser considerado que cada uma também usara seu próprio sapato.
c) Os nomes das amigas podem ser alterados na entrada pelo teclado possibilitando o uso para outros grupos de 4 amigas.
d) O programa não pode ultrapassar o grupos de pessoas que será sempre de 4.
Exemplo:
Entrada Saída
Flavia Claudia com sapato de Claudia Claudia com sapato de Solange Claudia com sapato de Flavia Solange com sapato de Marta Solange com sapato de Claudia Solange com sapato de Solange Solange com sapato de Flavia Flavia com sapato de Marta Flavia com sapato de Claudia Flavia com sapato de Solange Flavia com sapato de Flavia
Bom Trabalho !!!
R: #include <stdio.h> #include <stdlib.h> main() { char nome [4][10]; for(int i=0;i<=3;i++) scanf("%s",nome[i]); for(int i=0;i<=3;i++){ for(int j=0;j<=3;j++){printf("%s com sapato de %s \n",nome[i],nome[j]); }
} }