Buscar

Lista de Exercícios 5 - Resolução (1)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Algoritmos e linguagem de programação 
Lista de Exercícios IV 
 
1. Construa uma função que apresente na tela o valor de H, sendo H calculado por: 
 H = 1*1 + 2*2 + 3*3 + 4*4 + ... + N*N . 
 O valor de N será apresentado pelo usuário. 
#include<iostream> 
void func_H_H(int nr) 
{ 
 int acc=0; 
 printf("H="); 
 for(int i=1; i <=nr; i++){ 
 printf("%d*%d", i, i); 
 if(i!=nr) 
 printf(" + "); 
 acc=acc+i*i; 
 } 
 printf("=%d", acc); 
} 
 
main() 
{ 
 int nr; 
 printf("\tDigite o numero "); 
 scanf("%d", &nr); 
 func_H_H(nr); 
 printf("\t\n"); 
 system("pause"); 
} 
 
 
2. Desenvolva três funções, sendo elas void imprimevetor, void leiavetor e void ordenavetor, todas 
elas devem receber como parâmetro um vetor unidimensional e o tamanho deste vetor. Faça o 
programa principal compatível com as funções criadas. 
 
Entrada via teclado: Vet[6] = { 9,4,6,1,0,5 } 
Impressão: Vet[6] = { 0,1,4,5,6,9 } 
 
#include<iostream.h> 
 
void imprime(float vet[], int tam); 
void ler(float vet[], int &tam); 
void ordenar(float vet[], int tam); 
 
main() { 
 
float vetor[50]; 
int tam; 
 
ler(vetor,tam); 
ordenar(vetor,tam); 
imprime(vetor,tam); 
 
system("pause"); 
} 
 
void imprime(float vet[4], int tam){ 
 
 printf("\n\t\tvalores ordenados \n"); 
 for (int x=0; x<tam; x++) { 
 printf("\n\t\t%1.2f", vet[x]); 
 } 
 printf("\n\n\n\n\n\n\n\n\n\n\n\n");} 
 
void ler(float vet[4],int &tam) { 
 printf("\n\t\tdigite o tamanho do vetor \n"); 
 scanf("%d", &tam); 
 
 for(int x=0; x<tam; x++) { 
 printf("qual o numero\t"); 
 scanf("%f", &vet[x]);}} 
 
void ordenar(float vet[4],int tam) { 
 int aux; 
 for(int x=0; x<tam-1; x++) { 
 for(int y=x+1; y<tam; y++) { 
 if(vet[x]>vet[y]) { 
 aux= vet[x]; 
 vet[x]=vet[y]; 
 vet[y]=aux; }}}} 
 
 
3. Em um cinema, certo dia, cada espectador respondeu a um questionário, que perguntava a sua 
idade (ID) e a opinião em relação ao filme (OP), seguindo os seguintes critérios: 
Opinião Significado 
A Ótimo 
B Bom 
C Regular 
D Ruim 
E Péssimo 
A entrada de dados sobre a opinião deve ser validada. O final da pesquisa será indicado 
quando a idade do usuário for informada como negativa (idade inexistente). Construa um 
programa que, lendo esses dados, calcule e apresente: 
 Quantidade de pessoas que respondeu a pesquisa; 
 Média de idade das pessoas que responderam a pesquisa; 
 Porcentagem de cada uma das respostas. 
 
 
 
 
/*Em um cinema, certo dia, cada espectador respondeu a um questionário, que perguntava a sua 
idade (ID) e a opinião em relação ao filme (OP), seguindo os seguintes critérios: 
Opinião Significado 
A Ótimo 
B Bom 
C Regular 
D Ruim 
E Péssimo 
A entrada de dados sobre a opinião deve ser validada. O final da pesquisa será indicado quando a 
idade do usuário for informada como negativa (idade inexistente). Construa um programa que, 
lendo esses dados, calcule e apresente: 
• Quantidade de pessoas que respondeu a pesquisa; 
• Média de idade das pessoas que responderam a pesquisa; 
• Porcentagem de cada uma das respostas. 
*/ 
#include<iostream> 
void carrega(int id[], char op[], int &qtde) 
{ 
 qtde=0; 
 do{ 
 fflush(stdin); 
 printf(" digite a idade do expectador "); 
 scanf("%d", &id[qtde]); 
 if(id[qtde]>0) 
 { 
 fflush(stdin); 
 printf("Qual a opiniao sobre o filme:\n"); 
 printf("A Otimo\n"); 
 printf("B Bom\n"); 
 printf("C Regular\n"); 
 printf("D Ruim\n"); 
 printf("E Pessimo\n"); 
 printf(" digite sua opiniao "); 
 scanf("%c", &op[qtde]); 
 if(op[qtde] == 'a') 
 op[qtde]='A'; 
 if(op[qtde] == 'b') 
 op[qtde]='B'; 
 if(op[qtde] == 'c') 
 op[qtde]='C'; 
 if(op[qtde] == 'd') 
 op[qtde]='D'; 
 if(op[qtde] == 'e') 
 op[qtde]='E'; 
 qtde++; 
 } 
 
 }while(id[qtde]!=-1); 
} 
 
 
void imp(int id[], char op[], int qtde) 
{ 
 for(int i=0; i<qtde; i++){ 
 
 printf("A idade do expectador e %d e sua opiniao ", id[i]); 
 if(op[i] == 'A') 
 printf("Otimo\n"); 
 if(op[i] == 'B') 
 printf("Bom\n"); 
 if(op[i] == 'C') 
 printf("Regular\n"); 
 if(op[i] == 'D') 
 printf("Ruim\n"); 
 if(op[i] == 'E') 
 printf("Pessimo\n"); 
 } 
 printf("\n"); 
} 
//Quantidade de pessoas que respondeu a pesquisa; 
//Média de idade das pessoas que responderam a pesquisa; 
//Porcentagem de cada uma das respostas. 
 
void validapesq(int id[], char op[], int qtde) 
{ 
 float media=0; 
 float cont_ot=0, cont_bo=0, cont_re=0, cont_ru=0, cont_pe=0; 
 for(int i=0; i<qtde; i++){ 
 media=media+id[i]; 
 
 if(op[i] == 'A') 
 cont_ot++; 
 if(op[i] == 'B') 
 cont_bo++; 
 if(op[i] == 'C') 
 cont_re++; 
 if(op[i] == 'D') 
 cont_ru++; 
 if(op[i] == 'E') 
 cont_pe++; 
 } 
 printf(" %d pessoas responderam a pesquisa\n", qtde); 
 media=media/qtde; 
 printf(" A media da idade das pessoas que responderam a pesquisa e de %.2f anos\n", media); 
 printf(" Porcentagem de cada uma das respostas foram: Otimo %.0f , Bom %.0f , Regular %.0f , 
Ruin %.0f e Pessimo %.0f 
.",cont_ot/qtde*100.0,cont_bo/qtde*100.0,cont_re/qtde*100.0,cont_ru/qtde*100.0,cont_pe/qtde
*100.0); 
 
 
} 
main() 
{ 
 int id[50], qtde; 
 char op[50]; 
 carrega(id, op, qtde); 
 imp(id, op, qtde); 
 validapesq(id, op, qtde); 
 system("pause"); 
} 
 
4. Sabe-se que um número natural é triangular se ele é produto de três números naturais 
consecutivos. Exemplo 120 = 4*5*6. Fazer uma função para verificar se o número fornecido pelo 
usuário é triangular, e um programa que mostre quais são os números triangulares no intervalo de 
0 a N. N é o número recebido via teclado. 
 
#include<iostream> 
int func_nr_triang(int nr) 
{ 
 int teste=0; 
 for(int i=0; i <=nr; i++){ 
 if(i*(i+1)*(i+2) == nr) 
 { 
 teste=1; 
 } 
 } 
 if(teste == 1) 
 teste=1; 
 
 return teste; 
} 
 
 
main() 
{ 
 int nr, teste=0; 
 
 printf("\tDigite o numero natural que deseja verificar se e triangular "); 
 scanf("%d", &nr); 
 
 teste=func_nr_triang(nr); 
 if(teste == 1) 
 printf("\tNumero %d e triangular\n", nr); 
 else{ 
 printf("\tNumero %d nao e triangular\n", nr); 
 } 
 
 printf("\tIntervalo de numeros triangulares de 0 a %d: \n[ ", nr); 
 for(int i=0; i <=nr; i++){ 
 if(func_nr_triang(i)==1) 
 printf(" %d ", i); 
 } 
 printf(" ]\n\t"); 
 
 system("pause"); 
} 
 
5. Alterar o exercício anterior de modo que a função para verificar se o número fornecido pelo 
usuário é triangular seja recursiva, o programa principal deverá receber as alterações necessárias 
para continuar imprimindo quais são os números triangulares no intervalo de 0 a N. N é o número 
recebido via teclado. 
 
#include<iostream> 
int func_nr_triang(int nr, int &teste, int nr_comp) 
{ 
 if(nr == 0){ 
 return 1; 
 
 } 
 else{ 
 nr-func_nr_triang(nr-1, teste,nr_comp); 
 //printf(" %d %d ", nr, nr_comp); 
 if(nr*(nr+1)*(nr+2)==nr_comp){ 
 teste=1; 
 } 
 return(1); 
 } 
} 
 
main() 
{ 
 int nr, teste=0; 
 
 printf("\tDigite o numero natural que deseja verificar se e triangular "); 
 scanf("%d", &nr); 
 
 func_nr_triang(nr, teste, nr); 
 if(teste == 1 || nr==0) 
 printf("\tNumero %d e triangular\n", nr); 
 else{ 
 printf("\tNumero %d nao e triangular\n", nr); 
 } 
 if(nr == 0){ 
 
 } 
 else{ 
 printf("\tIntervalo de numeros triangulares de 0 a %d: \n[ 0 ", nr); 
 for(int i=0; i <=nr; i++){ 
 teste=0; 
 func_nr_triang(i, teste, i); 
 if(teste==1) 
 printf(" %d ", i); 
 } 
 printf(" ]\n\t"); 
 } 
 system("pause"); 
} 
 
 
6. Faca a função recursiva que imprima os números pares de um intervalo de 0 a N. N é o número 
fornecido pelo usuário através do teclado. 
 
#include <iostream> 
void pl() 
{ 
 printf("\n\n"); 
} 
 
int imprime( int nrr) 
{ 
 if( nrr == 0){ 
 printf("\n %d", nrr); 
 return 1; 
 } 
 else 
 { 
 
 imprime( nrr-1); 
 if(nrr%2==0) 
 printf("\n %d", nrr); 
 } 
} 
 
 
int main() 
{ 
 int nr; 
 printf("digite um numero"); 
 scanf("%d", &nr); 
 imprime(nr); 
 pl(); 
 system("pause"); 
} 
 
 
 
7. Faça uma função recursiva que receba como parâmetro um número e verifique se este é, ou 
não primo. 
 
 #include <iostream> 
void pl() 
{ 
 printf("\n\n"); 
} 
 
int f_primo( int nrr, int nr, int &primo) 
{ 
 
 if( nrr == 0){ 
 //printf("\n %d", nrr); 
 } 
 else 
 { 
 
 if(nr%nrr==0) 
 { 
 primo++; 
 // printf("\n %d %d", nrr, primo); 
 } 
 f_primo( nrr-1, nr, primo); 
 } 
 return(primo); 
} 
 
 
int main() 
{ 
 int nr, primo=0; 
 printf("digite um numero "); 
 scanf("%d", &nr); 
 
 if(f_primo(nr,nr,primo)==2) 
 printf(" numero primo "); 
 else 
 printf(" numero nao primo "); 
 
 pl(); 
 system("pause"); 
} 
 
8.Faça um programa que carregue um vetor unidimensional com números inteiros e positivos, e 
após o carregamento imprima o maior e o menor elemento deste vetor. A condição de saída do 
laço de carregamento é quando o usuário digitar o valor do elemento do vetor como -1. 
 
#include<stdio.h> 
#include<iostream> 
int main() 
{ 
 int vetor[200], cont=0, total, men, mai; 
 vetor[0]=0; 
 while(vetor[cont-1] != -1) 
 { 
 printf("entre com o elemento V[%d] ", cont+1); 
 scanf("%d", &vetor[cont]); 
 cont++; 
 } 
 total=cont-1; 
 cont=0; 
 men=mai=vetor[0]; 
 while(cont < total) 
 { 
 if(men > vetor[cont]) 
 { 
 men=vetor[cont]; 
 } 
 if(mai < vetor[cont]) 
 { 
 mai=vetor[cont]; 
 } 
 cont++; 
 } 
 printf("O maior elemento e %d e o menor e %d \n", mai, men); 
 system("pause"); 
} 
 
 
9)Faça uma função que receba como parâmetro uma string contendo uma frase qualquer, e 
calcule a quantidade de palavras da frase. 
 
#include<iostream> 
int frase(char str[]){ 
int i=0, cont=1; 
 for (i=0; i<strlen(str); i++) { 
 if (str[i] == ' '){ 
 cont++; 
 } 
 } 
 return(cont); 
} 
 
 main() { 
 char str[40]; 
 int resp = 0; 
 printf("Digite uma frase: "); 
 gets(str); 
 resp = frase(str); 
 printf("A frase: digitada tem %d palavras \n", resp); 
 system("pause"); 
} 
 
10.Escreva uma função que receba via parâmetro uma string contendo o nome completo de uma 
pessoa, ela deve imprimir o nome dessa pessoa no formato referência bibliográfica, ou seja, 
último sobrenome seguido por virgula e pelas iniciais dos primeiros nomes ou sobrenomes 
seguidos por um ponto. Por exemplo o nome Anderson Luis Pancotto deverá ser imprimido na 
tela como Pancotto, A. L. 
 
#include <cstdlib> 
#include <iostream> 
#include <math.h> 
 
using namespace std; 
 
void carrega(char nome[]) 
{ 
 printf("\n\t Digite o nome: "); 
 gets(nome); 
 printf("\n\t O nome digitado: %s",nome); 
} 
 
void tranforma(char nome[]) 
{ 
 int qtde, sinal=0, cont[10], contador=0; 
 qtde=strlen(nome); 
 
 /*teste para desenvolvimento 
 printf("\n\t Qde caracteres e %i\n", qtde); 
 */ 
 for(int i=qtde; i>=0; i--) 
 { 
 if(nome[i] == ' ') 
 { 
 cont[contador]=i; 
 contador++; 
 } 
 } 
 
 /*teste para desenvolvimento 
 for(int i=0; i < contador; i++) 
 { 
 printf("%i ",cont[i]); 
 }*/ 
 printf("\n\t"); 
 for(int i=0; i < contador; i++) 
 { 
 if(sinal == 0) 
 { 
 //ultimo sobrenome 
 for(int y=cont[i]; y < qtde; y++ ) 
 { 
 printf("%c", nome[y]); 
 } 
 //primeiro nome 
 printf(", %c.", nome[0]); 
 sinal=1; 
 } 
 //sobrenome meio 
 else 
 { 
 printf(" %c.", nome[cont[i]+1]); 
 } 
 } 
} 
 
int main(int argc, char *argv[]) 
{ 
 char nome[50]; 
 
 carrega( nome); 
 tranforma( nome); 
 
 
 
 printf("\n\n\t"); 
 system("PAUSE"); 
 return EXIT_SUCCESS; 
}

Continue navegando