Baixe o app para aproveitar ainda mais
Prévia do material em texto
Exercícios Resolvidos 3.1 a 3.9 - Programação de Computadores II -UFOP 3.1 Faça um programa para ler uma quantidade N de números inteiros e armazená-los em um vetor. O programa deve trocar o menor elemento do vetor com o elemento da primeira posição, e imprimir o vetor resultante. Exemplo de execução: Entrada: 7 2 8 3 1 0 -7 19 Saída: -7 8 3 1 0 2 19 Res: #include <iostream> #include <string> #include <iomanip> using namespace std; int main() { int N; cin >> N; int vetor[N]; int menor, pos; for(int i=0; i<N; i++){ cin>>vetor[i]; if(i == 0){ menor = vetor[i]; pos = i; } if(vetor[i] < menor){ menor = vetor[i]; pos= i; } } int aux = vetor[0]; vetor[0] = menor; vetor[pos] = aux; for(int i=0; i< N;i++){ cout<<vetor[i]<<" "; } } 3.2 Faça um programa que lê dez números inteiros e os armazena em um vetor, e calcula e mostra dois vetores resultantes: · o primeiro deve conter os números positivos; · o segundo deve conter os números negativos. Cada vetor resultante vai ter, no máximo, dez posições, que poderão não ser completamente utilizadas. Guarde em variáveis a quantidade de valores armazenados em cada vetor resultante. Exemplo de execução: Entrada: 10 1 5 -2 7 21 -6 18 -4 7 Saída: Positivos: 10 1 5 7 21 18 7 Negativos: -2 -6 -4 Reso: #include <iostream> using namespace std; int main() { int positivos [10]; int negativos [10]; int tamanho_positivos, tamanho_negativos, i, entrada; tamanho_positivos = 0; tamanho_negativos = 0; for(i=0; i<10; i++){ cin >> entrada; if(entrada < 0) negativos[tamanho_negativos ++] = entrada; else positivos[tamanho_positivos ++] = entrada; } cout << "Positivos: "; for(i=0; i<tamanho_positivos; i++){ cout << positivos[i] << " "; } cout << endl; cout << "Negativos: "; for(i=0; i<tamanho_negativos; i++){ cout << negativos[i] << " "; } cout << endl; return 0; } 3.3 Faça um programa cujas entradas são: · o número de elementos de um vetor de números inteiros, · seguido dos elementos do vetor, · seguidos de um valor a ser procurado no vetor. O programa deve retornar um número inteiro indicando o índice da posição do elemento, caso ele tenha sido encontrado, ou o número -1, caso não tenha sido encontrado no vetor. Exemplo de execução: Entrada: 7 4 8 6 1 0 -3 9 0 Saída: Posição do elemento 0: 4 Exemplo de execução: Entrada: 7 4 8 6 1 0 -3 9 10 Saída: Posição do elemento 10: -1 Reso: #include <iostream> using namespace std; int main() { int N, pos; cin >> N; int vetor[N]; for(int i=0; i < N ;i++){ int tem; cin >> tem; vetor[i] = tem; } cin >> pos; if(pos >= N){ cout<<"Posição do elemento "<<pos<<": "<<-1; }else{ cout<<"Posição do elemento "<<pos<<": "<<vetor[pos]; } } 3.4 Faça um programa para ler N valores inteiros e armazená-los em um vetor. O programa deve contar quantos valores pares ele possui e somar os valores ímpares, exibindo os resultados. Exemplo de execução: Entrada: 9 4 1 6 12 -2 9 7 -3 5 Saída: Quantidade de pares: 4 Soma dos ímpares: 19 Reso: #include <iostream> #include <locale.h> using namespace std; int main() { int n, i, qtd_pares, soma_impares; int *vet; qtd_pares = 0; soma_impares = 0; cin >> n; vet = (int*) malloc(n*sizeof(int)); for(i=0; i<n; i++){ cin >> vet[i]; if(vet[i] % 2 == 0) qtd_pares ++; else soma_impares += vet[i]; } cout << "Quantidade de pares: " << qtd_pares << endl; cout << "Soma dos ímpares: " << soma_impares << endl; free(vet); return 0; } 3.5 Faça um programa que leia as dimensões de uma matriz de números inteiros, M e N, onde M é o número de linhas e N é o número de colunas. A seguir, leia os elementos da matriz, e calcule e exiba a soma dos elementos da coluna onde se encontra o maior elemento da matriz. Exemplo de execução: Entrada: 4 3 3 8 1 2 4 3 1 12 -4 11 6 4 Saída: Soma = 30 #include <iostream> #include <locale.h> using namespace std; int main() { int m, n, i, j, coluna, maior, soma; int **mat; cin >> m; cin >> n; mat = (int **)malloc(m * sizeof(int*)); for(int i = 0; i < m; i++) mat[i] = (int *)malloc(n * sizeof(int)); coluna = 0; soma = 0; for(i=0; i<m; i++){ for(j=0; j<n; j++){ cin >> mat[i][j]; if(i == 0 && j == 0) maior = mat[i][j]; else if(maior < mat[i][j]){ maior = mat[i][j]; coluna = j; } } } for(i=0; i<m; i++) soma += mat[i][coluna]; cout << "Soma = " << soma; free(mat); return 0; } 3.6 Faça um programa que leia as dimensões de uma matriz de inteiros M e N, onde M é o número de linhas e N é o número de colunas. A seguir, leia os elementos da matriz, conte e escreva quantos valores maiores que 10 ela possui. Exemplo de execução: Entrada: 5 3 3 8 9 20 7 3 0 15 -4 12 9 4 7 13 2 Saída: Maiores que 10: 4 elementos Res: #include <iostream> using namespace std; int main() { int linha, coluna; cin >>linha; cin >> coluna; int contador =0; for(int i=0; i< linha; i++){ for(int j=0; j < coluna; j++){ int tem; cin >> tem; if(tem > 10){ contador ++; } } } cout<<"Maiores que 10: "<< contador<<" elementos"; } 3.7 aça um programa que leia a dimensão N de uma matriz (de números inteiros) quadrada. A seguir, leia os elementos da matriz, e verifique se essa matriz é diagonal. Exemplo de execução: Entrada: 4 3 0 0 0 0 2 0 0 0 0 7 0 0 0 0 1 Saída: A matriz é diagonal. Exemplo de execução: Entrada: 3 3 0 0 9 8 4 0 0 7 Saída: A matriz não é diagonal. Reso: #include <iostream> using namespace std; int main() { int m, n, i, j, diagonal; int **mat; cin >> n; m = n; diagonal = 1; mat = (int **)malloc(m * sizeof(int*)); for(i = 0; i < m; i++) mat[i] = (int *)malloc(n * sizeof(int)); for(i=0; i<m; i++){ for(j=0; j<n; j++){ cin >> mat[i][j]; } } for(i=0; i<m; i++){ for(j=0; j<n; j++){ if(i != j && mat[i][j] != 0) diagonal = 0; } } if(diagonal) cout << "A matriz é diagonal." << endl; else cout << "A matriz não é diagonal." << endl; free(mat); return 0; } 3.8 Palíndrome é uma palavra que pode ser lida tanto da esquerda para a direita como da direita para a esquerda, resultando na mesma sequência de caracteres. Faça um programa que lê uma palavra e verifica se a mesma é palíndrome ou não. Exemplo de execução: Entrada: arara Saída: arara é palíndrome Exemplo de execução: Entrada: abacaxi Saída: abacaxi não é palíndrome #include <iostream> #include <string> using namespace std; int main() { string palavra; int i, palindromo, tamanho; cin >> palavra; tamanho = palavra.size(); palindromo = 1; for(i=0; i<tamanho/2; i++) if(palavra[i] != palavra[tamanho-i-1]) palindromo = 0; if(palindromo) cout << palavra << " é palíndrome" << endl; else cout << palavra << " não é palíndrome" << endl; return 0; } 3.9 Escreva um programa que receba como entrada uma frase e uma letra, e calcule o percentual que indica a quantidade de ocorrências dessa letra com relação ao total de caracteres válidos (letras). Não considere o espaço como um caractere válido. Exiba a resposta com duas casas decimais. Exemplo de execução: Entrada: O rato roeu a roupa do rei de roma o Saída: Percentual: 19.23 % Resol: #include <iostream> #include <string> using namespace std; int main() { string frase; char letra; unsigned int contador, total, i; float percentual;contador = 0; total = 0; getline(cin, frase); cin >> letra; for(i=0; i<frase.size(); i++){ if(frase[i] == letra) contador ++; if(((int)frase[i] >= (int)'A' && (int)frase[i] <= (int)'Z') || ((int)frase[i] >= (int)'a' && (int)frase[i] <= (int)'z')) total ++; } if(total == 0) total ++; percentual = (float)contador/total*100.0; cout.precision(2); cout << "Percentual: " << fixed << percentual << " \%" << endl; return 0; }
Compartilhar