Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lista 2 – Gabarito 1) Numa competição de ginástica, 18 ginastas estão participando das provas de trava, barras assimétricas e solo. Construa uma matriz de struct que possa armazenar, para cada ginasta, os seguintes dados: número de inscrição e pontuação em cada prova. Ao final, deverá sair o número de inscrição e a pontuação em cada prova, uma em cada zona. Solução : #include <iostream> using namespace std; #define TAM 18 //define uma constante TAM com o valor 3 struct ginasta { int numero, pontuacao[3]; }; int main() { ginasta v[TAM]; for (int i = 0; i < TAM; i++) { cout << "Ginasta - " << (i+1) << " : " << endl; cout << "Numero de inscricao : "; cin >> v[i].numero; cout << "Pontuacao em cada prova (1- trava | 2 - barras assimetricas | 3- solo) : " << endl; for (int j = 0; j < 3; j++) { cout << "Forneca a pontuacao da prova " << (j+1) << " : " ; cin >> v[i].pontuacao[j]; } cout << endl; } cout << "Ginastas - inscricao e pontuacoes : " << endl; for (int i = 0; i < TAM; i++) { cout << "Ginasta - " << (i+1) << " : " << endl; cout << "Numero de inscricao : " << v[i].numero << "\tPontuacao na trava : " << v[i].pontuacao[0] << "\tPontuacao nas assimetricas : " << v[i].pontuacao[1] << "\tPontuacao no solo : " << v[i].pontuacao[2] << endl; } cout << endl; system("pause"); } 2) Tente fazer e pergunte em caso de dúvida. 3) Construa um programa que armazene matricula e cr de 8 alunos em uma matriz de struct. Solução : #include <iostream> using namespace std; #define TAM 8 //tipo struct aluno { int matricula; float cr; }; int main() { aluno v[TAM]; cout << "\tEntrada de dados" << endl; for (int i = 0; i < TAM; i++) { cout << "Forneca os dados do aluno no. " << (i+1) << " : " << endl; cout << "Matricula ? "; cin >> v[i].matricula; cout << "CR ? "; cin >> v[i].cr; } cout << "\t\nListagem dos alunos: " << endl << endl; for (int i = 0; i < TAM; i++) { cout << "Aluno de matricula = " << v[i].matricula << " - CR = " << v[i].cr << endl; } system("pause"); } 4) Altere o exercício três de tal maneira que o trecho de entrada seja uma função. Solução : #include <iostream> using namespace std; //definindo constante - TAM (tamanho do vetor) #define TAM 8 //tipo struct aluno { int matricula; float cr; }; //Protótipo da função void obterDadosAlunos(aluno v[]); //Prog. principal int main() { aluno v[TAM]; obterDadosAlunos(v); //chama a função cout << "\t\nListagem dos alunos: " << endl << endl; for (int i = 0; i < TAM; i++) { cout << "Aluno de matricula = " << v[i].matricula << " - CR = " << v[i].cr << endl; } system("pause"); } //Definição da função void obterDadosAlunos(aluno v[]) { cout << "\tEntrada de dados" << endl; for (int i = 0; i < TAM; i++) { cout << "Forneca os dados do aluno no. " << (i+1) << " : " << endl; cout << "Matricula ? "; cin >> v[i].matricula; cout << "CR ? "; cin >> v[i].cr; } } 5) Altere o exercício quatro de tal maneira que o trecho de saída seja uma função. Solução : #include <iostream> using namespace std; //definindo constante - TAM (tamanho do vetor) #define TAM 8 //tipo struct aluno { int matricula; float cr; }; //Protótipos void obterDadosAlunos(aluno v[]); void imprimirDadosAlunos(aluno v[]); //Prog. principal int main() { aluno v[TAM]; obterDadosAlunos(v); imprimirDadosAlunos(v); system("pause"); } //Definição da função void obterDadosAlunos(aluno v[]) { cout << "\tEntrada de dados" << endl; for (int i = 0; i < TAM; i++) { cout << "Forneca os dados do aluno no. " << (i+1) << " : " << endl; cout << "Matricula ? "; cin >> v[i].matricula; cout << "CR ? "; cin >> v[i].cr; } } void imprimirDadosAlunos(aluno v[]) { cout << "\t\nListagem dos alunos: " << endl << endl; for (int i = 0; i < TAM; i++) { cout << "Aluno de matricula = " << v[i].matricula << " - CR = " << v[i].cr << endl; } } 6) Construa um programa que armazene nome e cr de 6 alunos em uma matriz de struct. 7) Acrescente ao exercício seis, uma função converta todo o nome para letras maiúsculas(pode usar strupr) e acrescente espaços até que atinja ao tamanho definido por você menos um. Obs.: Tente fazer o no. 6 e o no.7. Em caso de dúvida, pergunte. A solução do no. 8 ajudará bastante. 8) Altere o exercício sete, transformando o trecho de entrada e de o trecho de saída em funções. Solução : #include <iostream> using namespace std; //Definindo constante MAX #define MAX 2 #define TAM_NOME 20 //Tipo struct aluno { char nome[TAM_NOME]; float cr; }; //Protótipos void obterFichasAlunos(aluno v[]); void imprimirFichasAlunos(aluno v[]); //Prog. principal int main() { aluno v[MAX]; obterFichasAlunos(v); imprimirFichasAlunos(v); system("pause"); } //Definições das funções void obterFichasAlunos(aluno v[]) { cout << "Entrada de dados : " << endl; for (int i = 0; i < MAX; i++) { cout << "Aluno " << (i+1) << endl; cout << "Nome ? "; cin.getline(v[i].nome,TAM_NOME); cout << "CR ? "; cin >> v[i].cr; getchar(); // outra forma de limpar o buffer : cin.get(); } } void imprimirFichasAlunos(aluno v[]) { cout << "Saida de dados : " << endl; for (int i = 0; i < MAX; i++) { cout << "Aluno " << (i+1) << endl; int comprimento = strlen(v[i].nome); for (int conta = 1; conta <= TAM_NOME - 1 - comprimento; conta++) strcat(v[i].nome," "); cout << "O aluno " << strupr(v[i].nome) << " possui CR = " << v[i].cr << endl; } }
Compartilhar