Preciso fazer o seguinte exercício, e tenho dificuldades, alguem poderia me ajudar?
- Escreva um programa que leia uma matriz A de dimensão 5 x 5, de valores reais, calcule e imprima a soma dos elementos da diagonal principal.
Desde já muito obrigado.
Preciso fazer o seguinte exercício, e tenho dificuldades, alguem poderia me ajudar?
Você já programou? Em Java? Especifique suas dificuldades.
É um trabalho da faculdade na qual a diciplina é linguagem, só que devido ao trabalho perdi algumas aulas e estou perdido na matéria. É em C++.
Onde devo escrever o programa todo. Se puder me ajudar lhe agradeço.
Aproveitando o embalo do tópico to com problema em um vetor!!!
1. Leia um conjunto de 10 notas. Em seguida exiba todas que são maiores que a média do conjunto.
public class vetor1 {
public static void main(String[] args) {
int i = 0;
int nota[]=new int[10];
int soma=0;
int n= 0;
int result=0;
for(i=1;i<=10;){
do{
nota[i]=Integer.parseInt(JOptionPane.showInputDialog("digite "+i+"° nota de 0 a 10"));
}while(nota[i]<0 || nota[i]>10);
soma=soma + nota[i];
i++;
}
result=soma/10;
JOptionPane.showMessageDialog(null,"O resultado é:"+result);
while(i>=0){
if(nota[i]>result){
JOptionPane.showMessageDialog(null,"A "+i+"° nota foi "+nota[i]+" e ela é maior que a media");
n++;
}
i--;
}if(n==0){
JOptionPane.showMessageDialog(null,"Não existe nenhuma nota maior que a media");
}
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at vetor1.main(vetor1.java:42)
Olá amigo, faça o seu FOR assim:
for(i=0;i<=9;){
pois o seu vetor foi criado de 0 a 9(10 posições), o programa estava tentando acessar o índice 10 de um vetor que vai de 0 a 9, ai acontecia o erro, pois o índice não existe.
vlw
Vlw
Bom com essa alteração ele está chegando até o While
while(i>=0){
e redisparando a exceção!!
ideias do porque ?
bom, mas na verdade o meu for inicia em 1 pois utilizo o i para fazer a contagem do numero de notas a serem digitadas!!
for(i=1;i<=10;)
JOptionPane.showInputDialog("digite "+i+"° nota de 0 a 10")); // 1° nota i=1.
=D
Poste o erro aqui.
E a minha dificuldade em resolver o exercício, alguem poderia me ajudar.
Que puder ficarei muito grato.
Vlw
Bom com essa alteração ele está chegando até o Whilewhile(i>=0){e redisparando a exceção!!
ideias do porque ?
bom, mas na verdade o meu for inicia em 1 pois utilizo o i para fazer a contagem do numero de notas a serem digitadas!!
for(i=1;i<=10;) JOptionPane.showInputDialog("digite "+i+"° nota de 0 a 10"));// 1° nota i=1.=D
Uma alternativa para seu exercício:
import java.util.Scanner;
public class Media {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int [] arrayNotas = new int[10];
int media =0;
for(int x =0; x< 10; x++){
arrayNotas[x] = capturaNota();
media += arrayNotas[x];
}
media = media /10;
System.out.println("Media = " + media);
System.out.println("Notas acima da media!");
for(int x =0; x< 10; x++){
if( arrayNotas[x] > media){
System.out.print(arrayNotas[x] + " ;");
}
}
}
public static int capturaNota(){
int nota = 0;
boolean ret = false;
while(!ret){
System.out.println("Digite uma nota de 0 á 10.");
nota = sc.nextInt();
if(nota > 10 || nota <0){
System.out.println("Nota invalida");
}else{
ret = true;
}
}
return nota;
}
}
for(i=0;i<=9;){
do{
nota[i]=Integer.parseInt(JOptionPane.showInputDialog("digite "+(i+1)+"° nota de 0 a 10"));
}while(nota[i]<0 || nota[i]>10);
soma=soma + nota[i];
i++;
}
result=soma/10;
JOptionPane.showMessageDialog(null,"O resultado é:"+result);
i--;
Tente assim amigo.
E a minha dificuldade em resolver o exercício, alguem poderia me ajudar.
Que puder ficarei muito grato.
Blz até ai resolveu Agora quando chega no while ele joga novamente a exceção…
abaixo do JOptionPane.showMessageDialog(null,"O resultado é:"+result);
coloque i--;
Preciso fazer o seguinte exercício, e tenho dificuldades, alguem poderia me ajudar?- Escreva um programa que leia uma matriz A de dimensão 5 x 5, de valores reais, calcule e imprima a soma dos elementos da diagonal principal.
Desde já muito obrigado.
Amigo, tente o seguinte:
#include <iostream>
using namespace std;
int main(){
double vetor[5][5];
double diagonal = 0;
for(int x=0; x<=4; x++){
for(int z=0; z<=4; z++){
cout << "Entre com o valor do vetor[" << x << "][" << z << "]: ";
cin >> vetor[x][z];
cout << endl;
if (x==z){
diagonal = diagonal + vetor[x][z];
}
}
}
cout << "A soma dos elementos da diagonal principal é = " << diagonal << endl;
return 0;
}
O código está em C++, vc disse que tinha q ser em C++.
vlw
Show de bola Resolveu A exceção!!!
Teria como me dar uma explicação do porque inserir esse i-- para que funcione corretamente ?
Agora na parte que mostra o resultado como eu coloquei o i para diminuir seu valor
while(i>=0){
if(nota[i]>result){
JOptionPane.showMessageDialog(null,"A "+i+"° nota foi "+nota[i]+" e ela é maior que a media");
n++;
}
i--; // aqui...
se a primeira nota ser digitada for a maior ele irá me retornar A nota 0° foi a maior que a media pois diminui-mos um numero do vetor na parte que você incluiu
Seria mais interessante se eu zera-se meu i para percorrer novamente o vetor ?
Ou também pode ser feita da maneira que eu estou fazendo ?
vlw a ajuda!!
Show de bola Resolveu A exceção!!!Teria como me dar uma explicação do porque inserir esse i-- para que funcione corretamente ?
Agora na parte que mostra o resultado como eu coloquei o i para diminuir seu valor
while(i>=0){ if(nota[i]>result){ JOptionPane.showMessageDialog(null,"A "+i+"° nota foi "+nota[i]+" e ela é maior que a media"); n++; } i--; // aqui...se a primeira nota ser digitada for a maior ele irá me retornar A nota 0° foi a maior que a media pois diminui-mos um numero do vetor na parte que você incluiu
vlw a ajuda!!
Coloque assim a sua mensagem:
JOptionPane.showMessageDialog(null,"A "+(i+1)+"° nota foi "+nota[i]+" e ela é maior que a media");
Teria como me dar uma explicação do porque inserir esse i-- para que funcione corretamente ?
Pq quando terminava o FOR, o valor de i era 10, e seu vetor não tem o índice 10, entendeu ?
Por isso precisava decrementar o i.