Ir ao conteúdo
  • Cadastre-se

Lucas Tezolini Herler

Membro Júnior
  • Posts

    15
  • Cadastrado em

  • Última visita

Tudo que Lucas Tezolini Herler postou

  1. Galera, estou com um trabalho da faculdade que consiste em ordenar a matrículas(tipo char) dos alunos pelo método quicksort dentro de um programa que o professor já passou. Já que eu tenho que colocar essa parte dentro do código dele, imaginei que no método quicksort apenas uma função já seria o suficiente. Porém, todos que eu vi utilizam várias funções, inclusive a ''main''. Alguém tem ideia de como eu posso resolver esse problema ? Se eu posso colocar várias funções dentro do código do meu professor ou se tenho que utilizar outro artifício para resolver isso ? Segue em baixo o código onde ponho a minha parte do trabalho e logo abaixo o que o professor fez e onde declarei a minha função quicksort. Sou iniciante em C++.. Obrigado !! #include "escola.h" #include <iostream> using namespace std; Escola::Escola(int qtdAluno, int qtdProfessor){ this->qtdAtualAlunos = 0; this->qtdAtualProfessores = 0; this->qtdMaximaAlunos = qtdAluno; this->qtdMaximaProfessores = qtdProfessor; this->professores = (Professor *) malloc (this->qtdMaximaProfessores * sizeof(Professor)); this->alunos = (Aluno *) malloc (this->qtdMaximaAlunos * sizeof(Aluno)); } Escola::Escola () { this->qtdAtualAlunos = 0; this->qtdAtualProfessores = 0; cout << "Informe a quantidade máxima de Professores: " << endl; cin >> this->qtdMaximaProfessores; this->professores = (Professor *) malloc (this->qtdMaximaProfessores * sizeof(Professor)); cout << "Informe a quantidade máxima de Alunos: " << endl; cin >> this->qtdMaximaAlunos; this->alunos = (Aluno *) malloc (this->qtdMaximaAlunos * sizeof(Aluno)); } Escola::ordenaAlunosQuicksort() { //* aqui seria onde eu colocaria o meu código *// } #ifndef ESCOLA_H #define ESCOLA_H #include "alunos/crudaluno.h" #include "professor.h" class Escola { private: Aluno *alunos; Professor *professores; int qtdMaximaProfessores; int qtdMaximaAlunos; int qtdAtualProfessores; int qtdAtualAlunos; public: Escola(); Escola(int qtdAluno, int qtdProfessor); void crudProfessor(); /* Sobrecarga de Métodos * Vários métodos com o mesmo nome. Mas parâmetros diferentes */ void inserirProfessor(); void inserirProfessor(Professor p); void excluirProfessor(int cpf); void excluirProfessor(int cpf, int mat); void excluirProfessor(char nome[]); void alterarProfessor(int cpf); void alterarProfessor(char nome[]); Professor buscarProfessor(int cpf); Professor buscarProfessor(char nome []); void ordenaAlunosQuicksort (Escola *e); /* aqui é onde eu declarei a minha parte do trabalho, o quicksort */ }; #endif // ESCOLA_H
  2. Quando digito os dois valores e dou enter o programa simplesmente trava.. Não to conseguindo achar o erro. Alguém pode me ajudar ? /* 4. Faça um programa que leia 2 valores inteiros e chame uma função que receba estas 2 variáveis e troque seu conteúdo, ou seja, esta função é chamada passando duas variáveis A e B por exemplo, e após a execução da função A conterá o valor de B e B terá o valor de A;*/ #include<stdio.h> #include<stdlib.h> #include<locale.h> int receba_A(int A) { int *A_pont,*B_pont; setlocale(LC_ALL,"Portuguese_Brazil"); printf("Digite o valor da variável A \n"); A_pont = &A; scanf("%d",A_pont); return *A_pont; } int receba_B(int B) { int *A_pont,*B_pont; setlocale(LC_ALL,"Portuguese_Brazil"); printf("Digite o valor da variável B\n"); B_pont = &B; scanf("%d",B_pont); return *B_pont; } int main () { int A, B, aux, *A_pont,*B_pont; *B_pont = receba_B(B); *A_pont = receba_A(A); aux = *B_pont; *B_pont = *A_pont; *A_pont = aux; printf("Valor de A: %d \n Valor de B: %d",*A_pont,*B_pont); return 0; }
  3. Obrigado !! Agora deu 100% certo ! Realmente não sabia como jogar a estrutura dentro da função. Agora está esclarecido
  4. Construa uma estrutura aluno com nome, número de matrícula e curso. Leia do usuário a informação de 5 alunos, armazene em vetor essa estrutura e imprima os dados na tela; Assim o fiz, porém está dando os seguintes erros na tela (segue a imagem); Alguém sabe o que poderia ser ? Não to conseguindo achar tal erro.. Já pesquisei em outros sites e tudo mais. /* 2. Construa uma estrutura aluno com nome, número de matrícula e curso. Leia do usuário a informação de 5 alunos, armazene em vetor essa estrutura e imprima os dados na tela;*/ #include<stdio.h> #include<string.h> #define t 5 typedef struct { char nome[900], curso[900]; int num_mat; }estudante; void receber(char aluno[t].nome, char aluno[t].curso, int aluno[t].num_mat) { int i; for (i=0;i<t;i++) { printf("Nome: "); fflush(stdin); fgets(aluno[i].nome,900,stdin); printf("Curso: "); fflush(stdin); fgets(aluno[i].curso,900,stdin); printf("Num matricula: "); scanf("%d",&aluno[i].num_mat); } } void mostrar(char aluno[t].nome, char aluno[t].curso, int aluno[t].num_mat) { int i; for (i=0;i<t;i++) { printf("Nome: %s", aluno[i].nome); printf("Curso: %s",aluno[i].curso); printf("Num matricula: %d ", aluno[i].num_mat); } } int main () { estudante aluno[t]; receber(aluno); mostrar(aluno); return 0; }
  5. Considerei o que disse e realizei as alterações, o código está assim. O problema é que não está contando de forma correta os acertos dos alunos, uma vez que quando eu testei o código e pus todas as respostas do aluno 0 de acordo com o gabarito, apareceu que ele tinha só 1 acerto. #include<stdio.h> #include<locale.h> #define l 3 #define c 5 void gabarito (char gab[c]) { printf("Criando o gabrito: \n\n"); int i, j; for (i=0;i<5;i++) { printf("Questão %d: \nMarque a, b, c, d ou e = ", i+1); scanf("%c", &gab[i]); getchar(); } } void ler (char m[l][c], char gab[c]) { int i, j, acertos[3]; for (i=0;i<l;i++) { acertos[i] = 0; printf("Informe as respostas do aluno %d \n", i); for (j=0;j<c;j++) { printf("Questão %d: \n", j+1); scanf("%c",&m[i][j]); getchar(); if (m[i][j] == gab[i]) { acertos[i] = acertos[i] + 1; } } } printf("\n\nINFORMANDO O RESULTADO !\n\n"); for (i=0;i<l;i++) { printf("O aluno %d obteve %d acertos \n", i, acertos[i]); } getchar(); } int main () { setlocale(LC_ALL, "Portuguese_Brazil"); int acertos[3]; char gab[c], m[l][c]; gabarito(gab); ler(m, gab); return 0; }
  6. obrigado, mano ! surgiu uma outra dúvida aqui: as funções na ''main'' devem estar na ordem que eu vou chamando as questões ?
  7. - esse ''novo jeito'' seria verificar cada valor de cada matriz e guardar apenas o maior deles. Ex: m1[0][0] = 32, m2[0][0] = 40, na nova matriz m3, o valor de posição 0,0 vai ser 40 -não to entendendo, na minha visão, todas as funções que eu usei têm que retornar algo.. A gabarito me diz o as respostas corretas e a ler me diz quantas questões certo aluno acertou - ok, alterei isso, obrigado - considerei o que disse, porém to usando todas as variáveis, acabei de verificar, ou cometi alguma redudância - quando eu coloquei a int main no fim do código apareceu um warning
  8. Olá, me disseram um outro jeito de fazer isso e assim o implementei. Porém na hora de imprimir, é mostrado valores aleatórios.. Alguém sabe o que poderia ser ? /* 6. Leia duas matrizes 4 x 4 e escreva uma terceira com os maiores elementos entre as primeiras;*/ #include<stdio.h> #include<locale.h> #define t 2 int main () { setlocale(LC_ALL,"Portuguese_Brazil"); int m1[t][t], m2[t][t], m3[t][t], i, j; preencher(m1); preencher(m2); mostrar(m3); } int preencher (int m1[t][t]) { int i,j; for (i=0;i<t;i++) { for (j=0;j<t;j++) { printf("Digite o valor de posição %d%d ", i, j); scanf("%d ", &m1[i][j]); } } } int ler (int m1[t][t], int m2[t][t], int m3[t][t]) /* função que vai realizar a operação*/ { int i,j; for (i=0;i<t;i++) { for (j=0;j<t;j++) { if (m1[i][j] > m2[i][j]) { m3[i][j] = m1[i][j]; } else { m3[i][j] = m2[i][j]; } } } } int mostrar (int m3[t][t]) { int i, j; for (i=0;i<t;i++) { for (j=0;j<t;j++) { printf("%d \t", m3[i][j]); } printf("\n"); } }
  9. eu realmente não sei como retornar todo o vetor.. Seria return gab[5] ou só return gab ?
  10. entendi, porém não to conseguindo retornar o vetor todo.. Alguma ideia ?
  11. ''- A função ler() não recebe o gabarito como parâmetro de entrada, logo não dá pra comparar pois não tem os valores do gabarito.'' Como eu faço isso ?
  12. #include<stdio.h> #include<locale.h> #define l 3 #define c 5 int main () { setlocale(LC_ALL, "Portuguese_Brazil"); int i, j, acertos[3]; char gab[c], m[l][c]; gabarito(gab); ler(m); } gabarito (char gab[c]) { printf("Criando o gabrito: \n\n"); int i, j; for (i=0;i<5;i++) { printf("Questão %d: \nMarque a, b, c, d ou e = ", i+1); scanf("%c", &gab[i]); getchar(); } } ler (char m[l][c]) { int i, j, acertos[i]; char gab[5]; for (i=0;i<l;i++) { acertos[i] = 0; printf("Informa as respostas do aluno %d \n"); for (j=0;j<c;j++) { printf("Questão %d: \n", j+1); scanf("%c",&m[i][j]); getchar(); if (m[i][j] = gab[i]) { acertos[i] = acertos[i] + 1; } printf("\n"); } } printf("\n\nINFORMANDO O RESULTADO !\n\n"); for (i=0;i<l;i++) { for (j=0;j<c;j++) { printf("O aluno %d obteve %d acertos \n", i, acertos[i]); } } getchar(); } 10. Leia uma Matriz 3 x 5 que se refere às respostas de 5 questões de múltipla escolha, referente a 3 alunos. Leia também um vetor de 5 posições contendo o gabarito de respostas que podem ser a, b, c, d ou e. Seu programa deverá comparar as respostas de cada candidato com o gabarito e emitir um vetor denominado resultado, contendo a pontuação correspondente a cada aluno. Esse programa que eu fiz só lê o gabarito e depois ele trava.. Alguém sabe onde poderia estar o erro ? Não to conseguindo visualizar. Agradeço desde já
  13. 6. Leia duas matrizes 4 x 4 e escreva uma terceira com os maiores elementos entre as primeiras. Sei que a ideia é ordená-las em ordem crescente e pegar os quatro últimos elementos de cada uma, a partir daí tenho que criar a nova matriz. A minha dúvida é: como pegar os maiores elementos num vetor bidimensional ?
  14. Estou com dúvida nessa questão de C++, galera, ele simplesmente não ta indicando o valor, quando ele existe na matriz. Sempre está acusando ''não encontrado!" e não sei o porquê. Alguém poderia me ajudar ? Agradeço desde já !7. Leia uma matriz 5 x 5, leia também um valor X. O programa deverá fazer uma busca desse valor na matriz e, ao final escrever a localização (linha e coluna) ou uma mensagem de “não encontrado” #include<stdio.h> #include<locale.h> #define t 2 int main () { setlocale(LC_ALL,"Portuguese_Brazil"); int m[t][t], i, j, x, lin, col, achou; preencher(m); indicar(x); busca(m); } int preencher(int m[t][t]) { int i, j; for (i=0;i<t;i++) { for (j=0;j<t;j++) { printf("Digite o valor de posição %d%d: ", i, j); scanf("%d",&m[j]); } } } int indicar (int x) { printf("Digite o valor a ser procurado: \n"); scanf("%d", &x); } int busca (int m[t][t]) { int i, j, lin, col, x, achou = 0; for (i=0;i<t;i++) { for (j=0;j<t;j++) { if (m[j] == x) { lin = i; col = j; achou = 1; } } } if (achou == 1) { printf("O valor encontrado é %d na posição %d %d \n", x, lin, col); } else { printf("Valor não encontrado !"); } }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!