Esercizio sulle sequenze.

di il
21 risposte

Esercizio sulle sequenze.

Salve a tutti, avrei dei problemi con la risoluzione di questo esercizio, anche perché la consegna mi fuorvia. Qualcuno mi può dare una mano con la sua risoluzione gentilmente.
Allegati:
20577_7b83e16a35c2342bb0994058e1ebcbdd.png
20577_7b83e16a35c2342bb0994058e1ebcbdd.png

21 Risposte

  • Re: Esercizio sulle sequenze.

    Certo, ma il codice lo scrivi TU

    Consiglio: suddividi il programma in DUE parti:

    1) lettura della sequenza da tastiera
    2) analisi della sequenza.

    Per iniziare, NON LEGGERE la sequenza da tastiera, ma crea una direttamente nel codice.
    Tra l'altro un esempio lo hai gia' nel testo dell'esercizio.

    In questo modo non perdi tempo ad inserire n-mila volte sempre gli stessi dati.

    QUANDO l'algoritmo funzionera', sostituisci il codice che ritorna la sequenza ""cablata"" con una letta da tastiera
  • Re: Esercizio sulle sequenze.

    Dobbiamo risolverlo noi?

    Comincia ad acquisire la sequenza e a scrivere una funzione che ti dice se la sottosequenza rispetta quelle quattro condizioni oppure no
  • Re: Esercizio sulle sequenze.

    KromKappa ha scritto:


    ... mi fuorvia.
    Ovvero? Spiegati.
  • Re: Esercizio sulle sequenze.

    migliorabile ha scritto:


    Certo, ma il codice lo scrivi TU

    Consiglio: suddividi il programma in DUE parti:

    1) lettura della sequenza da tastiera
    2) analisi della sequenza.

    Per iniziare, NON LEGGERE la sequenza da tastiera, ma crea una direttamente nel codice.
    Tra l'altro un esempio lo hai gia' nel testo dell'esercizio.

    In questo modo non perdi tempo ad inserire n-mila volte sempre gli stessi dati.

    QUANDO l'algoritmo funzionera', sostituisci il codice che ritorna la sequenza ""cablata"" con una letta da tastiera
    Ok, ma volevo un consiglio, meglio usare gli array o le liste in questo caso?
  • Re: Esercizio sulle sequenze.

    Qualche domanda:
    quanto tempo hai per consegnare?
    Puoi usare l'allocazione dinamica?
    Puoi usare i VLA?
  • Re: Esercizio sulle sequenze.

    StandardOil ha scritto:


    Qualche domanda:
    quanto tempo hai per consegnare?
    Puoi usare l'allocazione dinamica?
    Puoi usare i VLA?
    1 Poco ahimé, per questo ho chiesto senza un codice mio.
    2 Si
    3 Si
  • Re: Esercizio sulle sequenze.

    oregon ha scritto:



    Sarebbe meglio non "copiare" i codici altrui ma tentare di scrivere uno tuo eventualmente da correggere.
    Avete ragione, purtroppo non sono molto pratico di programmazione. Comunque sto cercando di scriverlo a piccoli passaggi, anche se ancora sono in alto mare ahimè, ragion per cui ho chiesto aiuto.
  • Re: Esercizio sulle sequenze.

    Essere un alto mare non giustifica la richiesta. Il codice non te lo può scrivere un altro.
  • Re: Esercizio sulle sequenze.

    Puoi anche scrivere l'algoritmo su carta e dopo tradurlo, così non devi prestare attenzione ai dettagli del linguaggio mentre pensi a come risolvere il problema. Purtroppo essendo un esercizio teorico, anche la scelta della struttura dati sarebbe un suggerimento importante.
  • Re: Esercizio sulle sequenze.

    Alexv ha scritto:


    Puoi anche scrivere l'algoritmo su carta e dopo tradurlo, così non devi prestare attenzione ai dettagli del linguaggio mentre pensi a come risolvere il problema. Purtroppo essendo un esercizio teorico, anche la scelta della struttura dati sarebbe un suggerimento importante.
    
    #include <stdio.h>
    #include <time.h> 
     
    int massimo(int v[], int n){
        int max;
      for (int i = 0; i < n; i++){
      if (max < v[i])
      max = v[i];
      }
      return max;
    }
    
    int main() {
      
      int i, j, k;
      int v[] = {1, 2, 3, 4, 5, 2, 6};
      srand(time(0));//inizializza il generatore sull'ora attuale dell'elaboratore time(0) 
      int n = sizeof(v)/sizeof(int);
    
     int max = massimo(v, n);
    
      int m = 2*(rand() % (n+1)/2 - 0);
      int a[m];
    
      for(i=0;i<m;i++) {
     
       if(i%2==0)
        a[i]=rand()%max+1;
       
       else
         a[i]=a[i-1]/2;
    
       
        for(j=0;j<i;j++) {
           	if(a[i]==a[j]) {
               i--;
               break;
            }
         }
    }
      
      for(i=0;i<m;i++)
       printf("%d\n", a[i]);
       
      return 0;
    }
    
    Per adesso ho scritto il codice in questo modo (usando gli array però). Credo che userò comunque le liste visto che chiede di prendere una sequenza data dalla tastiera. Ancora comunque non riesco a fare valere bene la quarta condizione (b = 2b[i+1]), dato che mi butta giù uno zero a causa della divisione. Qualche suggerimento per perfezionarlo?
  • Re: Esercizio sulle sequenze.

    oregon ha scritto:


    Essere un alto mare non giustifica la richiesta. Il codice non te lo può scrivere un altro.
    Infatti ho iniziato a scriverlo. Ma come ho risposto ad un altro utente è da sistemare.

    #include <stdio.h>
    #include <time.h>

    int massimo(int v[], int n){
    int max;
    for (int i = 0; i < n; i++){
    if (max < v)
    max = v;
    }
    return max;
    }

    int main() {

    int i, j, k;
    int v[] = {1, 2, 3, 4, 5, 2, 6};
    srand(time(0));//inizializza il generatore sull'ora attuale dell'elaboratore time(0)
    int n = sizeof(v)/sizeof(int);

    int max = massimo(v, n);

    int m = 2*(rand() % (n+1)/2 - 0);
    int a[m];

    for(i=0;i<m;i++) {

    if(i%2==0)
    a=rand()%max+1;

    else
    a=a[i-1]/2;


    for(j=0;j<i;j++) {
    if(a==a[j]) {
    i--;
    break;
    }
    }
    }

    for(i=0;i<m;i++)
    printf("%d\n", a);

    return 0;
    }
  • Re: Esercizio sulle sequenze.

    Usa i tag code per il codice, dovresti saperlo
  • Re: Esercizio sulle sequenze.

    oregon ha scritto:


    Usa i tag code per il codice, dovresti saperlo
    No, non lo sapevo, perché ho passato pochissimo tempo in questo forum.
  • Re: Esercizio sulle sequenze.

    KromKappa ha scritto:


    oregon ha scritto:


    Essere un alto mare non giustifica la richiesta. Il codice non te lo può scrivere un altro.
    Infatti ho iniziato a scriverlo. Ma come ho risposto ad un altro utente è da sistemare.

     
     #include <stdio.h>
    #include <time.h>
    
    int massimo(int v[], int n){
    int max;
    for (int i = 0; i < n; i++){
    if (max < v)
    max = v;
    }
    return max;
    }
    
    int main() {
    
    int i, j, k;
    int v[] = {1, 2, 3, 4, 5, 2, 6};
    srand(time(0));//inizializza il generatore sull'ora attuale dell'elaboratore time(0)
    int n = sizeof(v)/sizeof(int);
    
    int max = massimo(v, n);
    
    int m = 2*(rand() % (n+1)/2 - 0);
    int a[m];
    
    for(i=0;i<m;i++) {
    
    if(i%2==0)
    a=rand()%max+1;
    
    else
    a=a[i-1]/2;
    
    
    for(j=0;j<i;j++) {
    if(a==a[j]) {
    i--;
    break;
    }
    }
    }
    
    for(i=0;i<m;i++)
    printf("%d\n", a);
    
    return 0;
    }
    
Devi accedere o registrarti per scrivere nel forum
21 risposte