Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    [JAVA] auito per esame di laboratorio

    Urgentissimo! Ho pochi giorni di tempo per fare e presentare questi due programmini per l'esame di informatica. Se c'è qualcuno che possa aiutarmi lo prego, non esiti.
    Queste sono le due tracce:

    1) costruire una soluzione ricorsiva per il calcolo della sommatoria dei primi N numeri primi e descrivere i record di attivazione che verrebbero generati in occorrenza delle invocazioni del metodo sviluppato nel caso di N = 4.

    2)sviluppare un’applicazione Java che, usando dove opportuno la nozione di metodo, legga da tastiera una sequenza di numeri interi, la memorizzi in un array, cerchi il massimo e visualizzi sullo schermo la posizione di tale numero all’interno dell’array.


    Vi prego aiutatemi!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    io inizierei a studiare :P

  3. #3
    Originariamente inviato da keratox
    io inizierei a studiare :P
    evidentemente se ha postato qui.. è perchè ha bisogno di una mano..
    molti qui sono super esperti in programmazione.. e scrivere un po di righe di codice non credo sia un problema.. lo farei io stesso, ma credo ci sia gente decisamente più brava e in grado di dare una mano come si deve...

  4. #4
    dvx80
    Guest
    cosa intende con "descrivere i record di attivazione che verrebbero generati in occorrenza delle invocazioni del metodo sviluppato nel caso di N = 4" ???

    Beh dai il primo è abbastanza facile. E dovrebbe bastare questo:

    public int sommatoria(int i){

    if(i==0)
    return 0;
    else
    return (i+sommatoria(i-1));

    }


    Il secondo forse anche di più. Purtroppo non mi ricordo bene come si fa a leggere lo Stream da tastiera.Mi sembra che sia cosi:

    import java.io.*;

    BufferedReader in=new BufferedReader(new InputStreamReader System.in));

    int num=in.read();

    Prova a vedere se è giusto. Da qui in poi dovresti essere in grado di cavartela da solo.

    Purtroppo non ho tempo per testare xchè sono in uffico. Ti devi accontentare .....

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Il testo chiedeva la somma dei primi N NUMERI PRIMI, non dei primi N numeri.

    Per il primo esercizio potrebbe andare questo:

    codice:
    import java.io.*;
    import java.util.*;
    
    public class SommaNPrimi {
       public static boolean primo(int val) {
          boolean risultato = true;
    
          if ( (val == 1) || (val == 2) )
             risultato = true;
          else {
             int k=2;
             while (risultato && (k<val)) {
                if ((val%k) == 0)
                   risultato = false;
                k++;
             }
          }
          return risultato;
       }
    
       public static int sommaPrimiValori(int valore, int numero) {
          int tmp = valore;
          if (numero == 0)
             tmp = 0;
          else {
             if (primo(valore))
                tmp = tmp + sommaPrimiValori( (valore+1), (numero - 1) );
             else
                tmp = sommaPrimiValori( (valore+1), numero );
          }
          return tmp;
       }
    
       public static int sommaPrimi(int numero) { return sommaPrimiValori(1, numero); }
    
       public static void main(String [] args) {
          InputStreamReader isr = new InputStreamReader(System.in);
          BufferedReader br = new BufferedReader(isr);
          String valore;
          int val;
    
          System.out.print("Intrudurre un valore: ");
          System.out.flush();
             try {
                valore = br.readLine();
                val = Integer.parseInt(valore);
                System.out.println("La somma dei primi "+val+" numeri primi è: "+sommaPrimi(val));
          } catch (NumberFormatException nfe) {
          	nfe.printStackTrace();
          } catch (IOException ioe) { ioe.printStackTrace(); }
       }
    }
    Il secondo te lo posto quando l'avrò fatto, comunque è MOLTO più semplice di questo.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    dvx80
    Guest
    cavolo vero, chiedo venia .....

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    E questo è il codice del secondo esercizio:

    codice:
    import java.io.*;
    import java.util.*;
    
    public class PosMaxInt {
    
       public static int posMax(int [] array, int quanti) {
          int [] tmpMax = new int[2];
          tmpMax[0] = array[0];
          tmpMax[1] = 0;
          for (int t=0; t<quanti; t++) {
             if (array[t] > tmpMax[0]) {
                tmpMax[0] = array[t];
                tmpMax[1] = t;
             }
          }
          return tmpMax[1];
       }
    
       public static void main(String [] args) {
          InputStreamReader isr = new InputStreamReader(System.in);
          BufferedReader br = new BufferedReader(isr);
          String valore;
          int val;
          int [] numeri;
    
          System.out.print("Quanti valori leggere: ");
          System.out.flush();
          try {
             valore = br.readLine();
             val = Integer.parseInt(valore);
             numeri = new int[val];
             for (int i=0; i<val; i++) {
                System.out.print("Introdurre il "+(i+1)+"° valore: ");
                System.out.flush();
                valore = br.readLine();
                numeri[i] = Integer.parseInt(valore);
             }
             System.out.println("La posizione del valore massimo è: "+posMax(numeri, val));
          } catch (NumberFormatException nfe) {
             nfe.printStackTrace();
          } catch (IOException ioe) { ioe.printStackTrace(); }
       }
    }
    Il programma ti restituisce la posizione secondo la lociga dell'array: 0 per la prima, 1 per la seconda, 2 per la terza...
    Se vuoi la posizione a partire da 1 basta che modifichi la seguente linea:

    codice:
    System.out.println("La posizione del valore massimo è: "+posMax(numeri, val));
    In questo modo:

    codice:
    System.out.println("La posizione del valore massimo è: "+posMax(numeri, val)+1);
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Ringrazio quanti hanno già risposto ma credo di non aver specificato qualcosa... il corso è "fondamenti di programmazione Java" è ciò che vedo sempre che vada un po oltre. Io di mio ho studiato altro ma se il prof vede la classe io, o quella util o ancora catch per le eccezioni... per me sono guai.

    L'unico modo da noi usato per importare i numeri da tastiera è stato usare la SavichIn o JOptionPane.

    Se riuscite a creare dell'altro vi sarei molto grato.

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Capirai che io non potevo sapere che voi usate la JOptionPane (o una classe vostra) per l'introduzione dell'input da tastiera...
    Comunque, se sai come leggere un valore da tastiera (visto che dovrebbero avertelo insegnato), basta che tu sostituisca
    codice:
    valore = br.readLine();
             val = Integer.parseInt(valore);
    Con ciò che usi per l'introduzione dei numeri da tastiera ed il gioco è fatto.
    Togli il BufferedReader ed l'InputStreamReader, il blocco try catch e tutto funziona.
    Non mi sembra uno sforzo così grande!


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    Ti ringrazion tantissimo. Da ieri ho preso un libro più avanzato di Java e sto leggendo proprio tutta la gestione delle eccezioni. Pensavo che mi sarebbe stato più facile imparare le nuove istruzioni anzichè rifare il programma. Io c'ho provato, riesco a farlo tutto ma non ad ottenere la posizione. Anche se non veniva richiesto ho provato ad ordinarlo in ordine crescente prendendo quindi il valore e la posizione dell'ultimo elemento dell'array ma mi sa che a lui non andrà bene.
    Tengo il tuo, è ottimo, se riesco lo modifico altrimenti imparo i nuovi comandi perchè sicuramente me li chiederà (se li vedrà).
    Grazie tanto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.