Ir ao conteúdo
  • Cadastre-se

MATHEUSCDN

Membro Pleno
  • Posts

    28
  • Cadastrado em

  • Última visita

  1. Muito improvável Recentemente comprei uma fan na shopee e não tive problemas
  2. É... to desde ontem tentando mas não consegui fazer
  3. Essa 3 to me embolando dms... Ngm da minha sala conseguiu dar uma luz para ajudar a faze-la Aaah entendi ! Fiz o que você falou e deu esse erro
  4. Problema é que fica falando que eu não declarei esse método, mas nas outras partes tem o .getMedia e mesmo assim não da erro @AdrianoSiqueira Fiz a 3 assim public static void main (String arg[]) throws java.io.IOException { BufferedReader obj = new BufferedReader (new InputStreamReader(System.in)); int nota1; int nota2; int nota3; String aux; float media; int i; int contador = 0; for(i = 0; i < 3; i++) { contador++; // recebe a 1º nota System.out.println("Aluno " + contador + ", digite sua 1ª nota"); aux = obj.readLine(); nota1 = Integer.valueOf(aux).intValue(); // recebe a 2º nota System.out.println("Aluno " + contador + ", digite sua 2ª nota"); aux = obj.readLine(); nota2 = Integer.valueOf(aux).intValue(); // recebe a 3º nota System.out.println("Aluno " + contador + ", digite sua 3ª nota"); aux = obj.readLine(); nota3 = Integer.valueOf(aux).intValue(); // calcula a média media = (nota1 + nota2 + nota3) / 3; System.out.println("A média do aluno " + contador + " é " + media); } } O programa todo Classe aluno : public class Aluno { private int matricula; private String nome; private float nota1; private float nota2; private float nota3; private float media; public Aluno(int matricula, String nome, float nota1, float nota2, float nota3) { this.matricula = matricula; this.nome = nome; this.nota1 = nota1; this.nota2 = nota2; this.nota3 = nota3; this.media = 0.0F; } public int getMatricula() { return matricula; } public void setMatricula(int matricula) { this.matricula = matricula; } public float getMedia() { return media; } public void setMedia(float media) { this.media = media; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public float getNota1() { return nota1; } public void setNota1(float nota1) { this.nota1 = nota1; } public float getNota2() { return nota2; } public void setNota2(float nota2) { this.nota2 = nota2; } public float getNota3() { return nota3; } public void setNota3(float nota3) { this.nota3 = nota3; } } Classe disciplina : import java.io.*; public class Disciplina { private Aluno[] alunos; private int contador; private int capacidade; public Disciplina(int capacidade) { this.alunos = new Aluno[capacidade]; this.contador = 0; this.capacidade = capacidade; } public void adicionaAluno(Aluno aluno) { if (contador < capacidade) { alunos[contador] = aluno; contador += 1; } } public static void main (String arg[]) throws java.io.IOException { BufferedReader obj = new BufferedReader (new InputStreamReader(System.in)); int nota1; int nota2; int nota3; String aux; float media; int i; int j; int cont = 0; for(i = 0; i < 3; i++) { cont++; // recebe a 1º nota System.out.println("Aluno " + cont + ", digite sua 1ª nota"); aux = obj.readLine(); nota1 = Integer.valueOf(aux).intValue(); // recebe a 2º nota System.out.println("Aluno " + cont + ", digite sua 2ª nota"); aux = obj.readLine(); nota2 = Integer.valueOf(aux).intValue(); // recebe a 3º nota System.out.println("Aluno " + cont + ", digite sua 3ª nota"); aux = obj.readLine(); nota3 = Integer.valueOf(aux).intValue(); // calcula a média media = (nota1 + nota2 + nota3) / 3; System.out.println("A média do aluno " + cont + " é " + media); } } public int achaMelhor() { if (contador <= 0) { System.out.println("[ E ]: Não há alunos nessa disciplina."); return -1; } Aluno melhor = alunos[0]; for (int i = 0; i < contador; i++) { if (alunos[i].getMedia() > melhor.getMedia()) { melhor = alunos[i]; } } return melhor.getMatricula(); } public int mostraAprovados() { for (int i = 0; i < contador; i++) { if (alunos[i].getMedia() > 7.0) { System.out.println("Aluno aprovado com média : "+getMedia()); } else { System.out.println("Aluno reprovado com média: "+getMedia()); } } } public Aluno[] getAlunos() { return alunos; } public int getContador() { return contador; } } Mas segundo o compilador, tem um erro o qual não sei como resolver...
  5. Teria alguma demonstração de como posso fazer isso ? Fiz isso aqui , está certo ? public int mostraAprovados() { for (int i = 0; i < contador; i++) { if (alunos[i].getMedia() > 7.0) { System.out.println("Aluno aprovado com média : "+getMedia()); } else { System.out.println("Aluno reprovado com média: "+getMedia()); } } }
  6. Preciso de uma ajuda no meu tópico 3 e 4, não sei como fazer 1,2 e 5 já estão feitos 1) public class Aluno { private int matricula; private String nome; private float nota1,nota2 , nota3 , media; public Aluno (int matricula, String nome,float nota1,float nota2, float nota3, float media) { this.matricula=matricula; this.nome=nome; this.nota1=nota1; this.nota2=nota2; this.nota3=nota3; this.media=media; } public int getMatricula() { return matricula; } public String getNome() { return nome; } public float getNota1() { return nota1; } public float getNota2() { return nota2; } public float getNota3() { return nota3; } public float getMedia() { media = (nota1 + nota2 + nota3) / 3; return media; } public void setMatricula(int matricula) { this.matricula=matricula; } public void setNome(String nome) { this.nome=nome; } public void setNota1(float nota1) { this.nota1=nota1; } public void setNota2(float nota2) { this.nota2=nota2; } public void setNota3(float nota3) { this.nota3=nota3; } public void setMedia(float media) { this.media=media; } } 2) public class Disciplina { Aluno vet[]; int contador; public Disciplina (int qtdAlunos )//2 { vet = new Aluno[qtdAlunos]; contador=0; } public void adicionaAluno(Aluno obj)//2 { if (contador < vet.length) { vet[contador] = obj; contador++; } } 5) public int achaMelhor()//5 { int i; int maiorMatricula=0; float maiorMedia=0; for (i=0; i < contador; i++) { if (maiorMedia < vet[i].getMedia()) { maiorMedia = vet[i].getMedia(); maiorMatricula = vet[i].getMatricula(); } } return maiorMatricula; } Os que estão feitos estão corretos ?
  7. E essa vírgula depois do '0' ? Porque ela está ali e o que acontece depois dela ? Quer que eu escreva um programa aleatório ou escreva esse que estou falando aqui ? Não entendi . Porque se for ele eu já coloquei ele completo ali em cima
  8. Não, não foi isso que aconteceu. O que eu te expliquei e vou repetir agora é que SEMPRE tem esses 3 arquivos abertos: stdin, stdout e stderr. SEMPRE. Não é que não tinha um arquivo de entrada. O programa que eu escrevi para te mostrar sempre lê do arquivo entrada. Se vier um argumento ao iniciar o programa ele deve ser o nome do tal arquivo, e será usado no fopen() Se não vier nada então o programa faz entrada = stdin e continua. Sem fopen. Porque? Porque como eu já disse umas vezes stdin já está aberto. Leia os exemplos. E tire aquele include a mais. E mude a extensão para C. Entendi ! Eu só tenho mais uma dúvida a qual eu não tinha prestado atenção antes char isbn_dv(char isbn[9]) { int s1 = 0; int s2 = 0; int i, digito; for (i = 0; i < 9; i++) s1 += isbn[i] - '0', s2 += s1; digito = 11 - ((s1+s2) % 11); if (digito == 11) return '0'; if (digito == 10) return 'X'; return '0' + digito; } O que acontece nessa parte do for ? Onde tem s1+= isbn[i] - '0', s2+=s1 ? Ele faz a soma parcial entre s1 e s2 e subtrai por 0 ?
  9. Foi exatamennte isso que aconteceu, como não tinha um arquivo de entrada ele leu as informações que digitei Entendeu errado. A condição: while ( (p != NULL) && (strcmp(linha,final) != 0) ) Se o valor de p não for nulo então leu algo. E aí, e somente aí, faz a segunda parte e vê se o que leu não é o final. E isso é o AND, && E se der verdadeiro então calcula o DV e lê o próximo ISBN. Como eu expliquei no parágrafo acima, se não ler nada fgets() não muda nada em linha e por isso não deve usar linha nos testes. E se não ler nada não pode comparar porque vai ter o mesmo valor de antes, o ISBN anterior. Ninguém garante que tem um "000000000" na entrada, afinal. Entendi, obrigado por ter tirado minhas dúvidas !
  10. Consegui rodar !!!!!!!!! Muito obrigado pela sua paciência , o problema estava nas bibliotecas, eu estava utilizando apenas stdio.h e string.h , quando usei stdlib.h o codigo rodou ! o código definitivo é esse #include <stdio.h> #include <stdlib.h> #include <string.h> char isbn_dv(char isbn[9]) { int s1 = 0; int s2 = 0; int i, digito; for (i = 0; i < 9; i++) s1 += isbn[i] - '0', s2 += s1; digito = 11 - ((s1+s2) % 11); if (digito == 11) return '0'; if (digito == 10) return 'X'; return '0' + digito; } // a funcao int main(int argc, char** argv) { char arquivo[30] = {0}; char linha[80]; FILE* entrada = stdin; if (argc > 1) // veio algo entao e o nome do arquivo { strcpy(arquivo, argv[1]); printf("Arquivo de entrada: \"%s\"\n", arquivo); entrada = fopen(arquivo, "r"); if (entrada == NULL) return -1; printf("Aberto \"%s\"\n", arquivo); }; char final[] = "000000000"; linha[9] = 0; // tem que ser uma string afinal char* p = fgets(linha, sizeof linha, entrada); while ( (p != NULL) && (strcmp(linha,final) != 0) ) { linha[9] = 0; printf("%s-%c\n", p, isbn_dv(&linha[0])); p = fgets(linha, sizeof linha, entrada); linha[9] = 0; } fclose(entrada); return 0; } Mas tem algumas coisas que eu queria entender... int main(int argc, char** argv) { char arquivo[30] = {0}; char linha[80]; FILE* entrada = stdin; if (argc > 1) // veio algo entao e o nome do arquivo { strcpy(arquivo, argv[1]); printf("Arquivo de entrada: \"%s\"\n", arquivo); entrada = fopen(arquivo, "r"); if (entrada == NULL) return -1; printf("Aberto \"%s\"\n", arquivo); }; O que está acontecendo nessa parte do código ? Qual a função de argc e argv ? E a função desse FILE ? Tem muita coisa ai que eu nunca vi e por mais que o código tenha rodado eu queria entender como essa parte funciona E nesta parte aqui você transformou P em um ponteiro e mediu o tamanho de linha ? A parte da comparação eu entendi que se o valor de P for nulo e a comparação entre linha e final for diferente de 0 ele entra na condição char* p = fgets(linha, sizeof linha, entrada); while ( (p != NULL) && (strcmp(linha,final) != 0) ) { linha[9] = 0; printf("%s-%c\n", p, isbn_dv(&linha[0])); p = fgets(linha, sizeof linha, entrada); linha[9] = 0; } fclose(entrada); return 0;
  11. Por enquanto estou tentando rodar seu código e no vscode mostrou isso Vou baixar um IDE de apenas C e tentar rodar Deu o mesmo problema...
  12. O que rodei foi esse que usei pro meu código, pelo visto você de referiu ao código completo e este não rodei
  13. @Hokster1 Ta complicado... Minha dificuldade está sendo em fazer esse loop de repetição
  14. Sim Se for aquele "programa completo" ele não rodou Então deve ser bug do site, porque eu coloquei o codigo inteiro
  15. É o livro de deitel Eu meio que entendo sua solução mas não sei como atribuir ela ao meu programa, você poderia usar meu código e adaptar a sua solução nele ? Assim acho q eu entenderia um pouco melhor todos os erros . #include <stdio.h> char isbn_dv(char isbn[9]) { int s1 = 0; int s2 = 0; for (int i = 0; i < 9; i++) s1 += isbn[i] - '0', s2 += s1; int digito = 11 - ((s1+s2) % 11); if (digito == 11) return '0'; if (digito == 10) return 'X'; return '0' + digito; } int main(void){ char isbn[9]; scanf("%9s", isbn); printf("%s-%c", isbn, isbn_dv(isbn)); return 0; }

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...