HACKING 120% {Hacking, programmazione, computer & molto altro}

Aiuto Java

« Older   Newer »
  Share  
view post Posted on 12/11/2013, 21:23     +1   -1

Image and video hosting by TinyPic

Group:
Staffer onorari
Posts:
6,776
Reputation:
+5
Location:
Vicenza

Status:


Devo fare sto esercizio per casa
In un vettore di N elementi vengono memorizzati i prezzi di vendita degli articoli di una ditta.
I codici degli articoli corrispondono alla numerazione degli elementi del vettore.
Redigere un programma che:
1. carichi il vettore da tastiera;
2. indichi codice e prezzo del prodotto più costoso;
3. ricerchi l’articolo, o gli articoli, il cui prezzo si avvicina di più al prezzo medio.

non riesco a capire come caricare i vettori dei codici del prodotto
 
Top
RootkitNeo
view post Posted on 13/11/2013, 23:09     +1   -1




Devi riempire un array di N elementi con N prezzi.
 
Top
view post Posted on 14/11/2013, 14:31     +1   -1

Image and video hosting by TinyPic

Group:
Staffer onorari
Posts:
6,776
Reputation:
+5
Location:
Vicenza

Status:


guarda cosa sono riuscito a fare mi manca il terzo punto

CODICE
package esercizio17;

import java.util.Scanner;
public class Esercizio17 {
   public static void main(String[] args) {
       int n,y, i, maxcod;
       double media, maxp, somma;
       Scanner tastiera=new Scanner(System.in);
       n=tastiera.nextInt();
       double prezzo[]= new double[n];
       int cod[]=new int[n];
     
     
       
       maxp=0;
       maxcod=0;
       somma=0;
       y=0;
       
       
       for(i=0; i<=(n-1); i++){
           y++;
           prezzo[i]=tastiera.nextDouble();
           cod[i]=y;
           if(prezzo[i]>maxp){
               maxp=prezzo[i];
               maxcod=cod[i];
           }
           somma=somma+prezzo[i];
       }
       media=somma/n;
       System.out.println(media);
       System.out.println(maxp);
       System.out.println(maxcod);
           }
       }

e con questo i primi due punti sono fatti ... ma non so come fare il terzo punto per ricercare il numero del prodotto pià vicino alla media
 
Top
RootkitNeo
view post Posted on 14/11/2013, 15:22     +1   -1




Non rispetta però quanto richiesto dalla traccia:
CITAZIONE
In un vettore di N elementi vengono memorizzati i prezzi di vendita degli articoli di una ditta.
I codici degli articoli corrispondono alla numerazione degli elementi del vettore.

Significa che il codice è l'indice dell'array dei valori. Quindi valore 0 dell'array (codice 0) corrisponde un valore X; alla posizione 1 (codcie 1) corrisponde il valore Y, e via dicendo.

Per il terzo punto, calcoli la media dei prodotti e poi guardi quello che ha lo scarto minore dalla media. Puoi semplicemente usare la sottrazione.
 
Top
view post Posted on 14/11/2013, 16:22     +1   -1

Image and video hosting by TinyPic

Group:
Staffer onorari
Posts:
6,776
Reputation:
+5
Location:
Vicenza

Status:


quindi metto y double y=-1 faccio tutto com'è?

non so come fare il terzo punto .. potresti darmi tu il codice?
 
Top
view post Posted on 14/11/2013, 16:28     +1   -1
Avatar

Coltello

Group:
Admin
Posts:
436
Reputation:
+35
Location:
Utero di mia madre

Status:


Quoto Root per il fatto del codice... Tu devi fare un array dove in ogni posizione ci sono più campi: codice e prezzo...
Per renderti la cosa più facile ti hanno detto che il codice corrisponde all'indice del ciclo da utilizzare per riempire l'array...
Niente di più facile: una volta conosciuta N grandezza dell'array, lo dichiari di [N], poi fai un for da 0 a N e lo fai riempire dall'utente con tutti i prezzi...
Quando andrai a svolgere il secondo e il terzo punto per sapere il codice del prodotto ti basterà vedere la posizione dell'array ;)
 
Web  Top
view post Posted on 14/11/2013, 16:31     +1   -1

Image and video hosting by TinyPic

Group:
Staffer onorari
Posts:
6,776
Reputation:
+5
Location:
Vicenza

Status:


ragazzi non vi intendo fatemi un esempio ...
 
Top
view post Posted on 14/11/2013, 16:50     +1   -1
Avatar

Coltello

Group:
Admin
Posts:
436
Reputation:
+35
Location:
Utero di mia madre

Status:


CODICE
import java.io.*;
public class Shivaz
{
   public static void main (String args[]) throws Exception
   {
       InputStreamReader in=new InputStreamReader(System.in);
       BufferedReader tastiera=new BufferedReader(in);
       System.out.println("Inserire grandezza array");
       int n=Integer.parseInt(tastiera.readLine());
       int[] prezzi=new int[n];
       int media=0,max=0,maxcod=0;
       for(int i=0;i<n;i++)
       {
           do
           {
               System.out.println("Inserire prezzo");
               prezzi[i]=Integer.parseInt(tastiera.readLine());
           }
           while(prezzi[i]<0);
           if(prezzi[i]>max)
           {
               max=prezzi[i];
               maxcod=i;
           }
           media+=prezzi[i];
       }
       media=media/n;
       int pm=0;
       int min=0;
       for(int i=0;i<n;i++)
       {
           if(i==0)
               min=Math.abs(prezzi[i]-media);
           else
           if(Math.abs((double)(prezzi[i]-media))<min)
               pm=i;
       }
       System.out.println("Prezzo massimo: "+max+"; con il codice: "+maxcod);
       System.out.println("Prezzo più vicino alla media: "+prezzi[pm]+"; con il codice: "+pm);
   }
}

Tieni :smile: avevo 2 min e l'ho voluto fare anche io xD

Ora non fare che lo copi e non capisci... Cerca di capirci qualcosa... Se hai qualche dubbio avvisa :)
 
Web  Top
©ÃlÐö
view post Posted on 14/11/2013, 20:22     +1   -1




CITAZIONE (RËVØ @ 14/11/2013, 16:50) 
CODICE
[...]
           do
           {
               System.out.println("Inserire prezzo");
               prezzi[i]=Integer.parseInt(tastiera.readLine());
           }
           while(prezzi[i]<0);
[...]

Questo pezzo non ha molto senso, se inserisci un prezzo negativo continua il ciclo se no se lo inserisci positivo esce? Io avrei fatto:
CODICE
while (true) {
               System.out.println("Inserire prezzo");
               prezzi[i]=Integer.parseInt(tastiera.readLine());
}


E nel metodo main la sintassi è "throws IOException".
Oltre a questi piccoli errori il resto è ben fatto...
 
Top
view post Posted on 14/11/2013, 21:34     +1   -1
Avatar

Coltello

Group:
Admin
Posts:
436
Reputation:
+35
Location:
Utero di mia madre

Status:


Le eccezzioni ancora non mi abituo a utilizzarle xD

Che poi alla fine come numero di righe e quindi ottimizzazione abbiamo fatto la stessa cosa... Magari le eccezzioni le utilizzi solo quando ci sono cose più complesse da controllare ;)
 
Web  Top
RootkitNeo
view post Posted on 15/11/2013, 00:19     +1   -1




Il numero di righe conta poco con l'ottimizzazione. Non c'è molto di efficienza in quei metodi, e comunque non si può far molto visto il tipo di esercizio...
Alcune variabili si possono evitare ed al posto del while, se proprio vuoi mettere il controllo, puoi usare il valore assoluto.

Comunque quel codice non è corretto, non rispetta il punto 3.

CITAZIONE
ricerchi l’articolo, o gli articoli, il cui prezzo si avvicina di più al prezzo medio.

Inoltre per memorizzare i prezzi si dovrebbero usare i double, non gli int.

@©ÃlÐö: il while come il tuo significa far continuare all'infinito la richiesta del prezzo.

Io per i prezzi farei così:
CODICE
for(int i=0; i<prezzi.length; i++) {
 System.out.print("Inserisci prezzo "+i+": ");
 int p = scanner.nextInt();
 prezzi[i] = ((p & 0x80000000) >> 31 == -1) ? (~p+1) : p;
}

E' più figo, inoltre evita il ciclo (ma non l'if, ovviamente).

Comunque più leggo il punto 3 più lo trovo ambiguo. Come si stabilisce quando il valore che si avvicina abbastanza? Diverso è il caso se viene interpretato come "i prezzi (uguali) che si avvicinano di più al valore medio".

Il prezzo massimo lo calcolerei così comunque:
CODICE
for(int i=1; i<prezzi.length; i++) {
 System.out.print("Inserisci prezzo "+i+": ");
 prezzi[i] = scanner.nextDouble();
         
 indice = (prezzi[i] > prezzi[i-1]) ? i : indice;
}
 
Top
view post Posted on 15/11/2013, 09:14     +1   -1
Avatar

Coltello

Group:
Admin
Posts:
436
Reputation:
+35
Location:
Utero di mia madre

Status:


In effetti per quanto riguarda il terzo punto, i prezzi che si avvicinano alla media, ammeno che non ci sia ua quantita limitr, sono tutti
 
Web  Top
view post Posted on 15/11/2013, 09:52     +1   -1

Image and video hosting by TinyPic

Group:
Staffer onorari
Posts:
6,776
Reputation:
+5
Location:
Vicenza

Status:


Grazie ragazzi è che io da poco ho iniziato java ( da inizio di sto anno di scuola ) e non sono ancora così avanti :)
 
Top
RootkitNeo
view post Posted on 15/11/2013, 13:58     +1   -1




Molte cose le impari con l'esperienza non con lo studio del linguaggio stesso (e se c'è di mezzo la scuola è anche peggio lol).
 
Top
view post Posted on 15/11/2013, 14:26     +1   -1
Avatar

Coltello

Group:
Admin
Posts:
436
Reputation:
+35
Location:
Utero di mia madre

Status:


Il requisito più importante che devi avere è la logica... Il codice è applicato ad essa, poi è ovvio che conoscendolo sai anche come cavartela in certe situazioni più complicate ;)

Quoto Root: l'esperienza è anche molto importante
 
Web  Top
19 replies since 12/11/2013, 21:23   241 views
  Share