Vetor

15 respostas
G

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.

15 Respostas

ul1sses

Você já programou? Em Java? Especifique suas dificuldades.

G

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

Eider

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");
	}
}
}
exceção: Que está estrapolándo o vetor. ok. mais onde isso está acontecendo que não consegui identificar??
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
	at vetor1.main(vetor1.java:42)
Henrique_Moraes

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

Eider

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

Henrique_Moraes

Poste o erro aqui.

G

E a minha dificuldade em resolver o exercício, alguem poderia me ajudar.
Que puder ficarei muito grato.

diego.sas

Eider@:
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

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;
	}
}
Henrique_Moraes
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.

pmlm

Gap07:
E a minha dificuldade em resolver o exercício, alguem poderia me ajudar.
Que puder ficarei muito grato.

Qual dificuldade? Ainda não vi aqui nenhuma dificuldade tua

Eider

Blz até ai resolveu Agora quando chega no while ele joga novamente a exceção…

Henrique_Moraes

abaixo do JOptionPane.showMessageDialog(null,"O resultado é:"+result);

coloque i--;

Henrique_Moraes
Gap07:
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

Eider

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

Henrique_Moraes
Eider@:
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.

Criado 28 de março de 2012
Ultima resposta 28 de mar. de 2012
Respostas 15
Participantes 6