MATHEUSCDN
Membro Pleno-
Posts
28 -
Cadastrado em
-
Última visita
Reputação
0-
Cooler pode pegar fogo?
MATHEUSCDN respondeu ao tópico de Josisvaldo em Refrigeração e superaquecimento
Muito improvável Recentemente comprei uma fan na shopee e não tive problemas -
Java Java envolvendo classes e vetores
MATHEUSCDN respondeu ao tópico de MATHEUSCDN em Java/Android SDK
É... to desde ontem tentando mas não consegui fazer -
Java Java envolvendo classes e vetores
MATHEUSCDN respondeu ao tópico de MATHEUSCDN em Java/Android SDK
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 -
Java Java envolvendo classes e vetores
MATHEUSCDN respondeu ao tópico de MATHEUSCDN em Java/Android SDK
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... -
Java Java envolvendo classes e vetores
MATHEUSCDN respondeu ao tópico de MATHEUSCDN em Java/Android SDK
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()); } } } -
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 ?
-
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
-
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 ?
-
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 !
-
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;
-
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...
-
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
-
-
Sim Se for aquele "programa completo" ele não rodou Então deve ser bug do site, porque eu coloquei o codigo inteiro
-
É 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