Baixe o app para aproveitar ainda mais
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; }
Compartilhar