Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: Esercizio Linguaggio C

  1. #1

    Esercizio Linguaggio C

    Non sto riuscendo a risolvere il seguente esercizio:

    Scrivere un programma che legga in input 20 numeri, ognuno dei quali compreso tra 10 e 100, estremi inclusi.
    Per ogni numero letto, visualizzarlo solo se non è un duplicato di uno già letto.
    Utilizzare il vettore più piccolo per risolvere il problema.

    Qualcuno può aiutarmi?


  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    45
    Tratto dal Regolamento
    Infine, ricordate che quest'area non è un luogo in cui farsi fare i compiti a casa: se avete un esercizio da risolvere, proponete la vostra soluzione, riportate il codice, indicate l'errore o la descrizione dell'effetto indesiderato... la risoluzione del vostro problema presuppone uno sforzo da parte dell'autore della discussione.
    Se magari posti quello che sei riuscito a fare da solo.... Noi possiamo solo aiutarti, e non farteli....

  3. #3
    #include <stdio.h>
    #include <stdlib.h>


    int main()
    {
    int a[10], n, i=0;
    printf ("Immetti 10 numeri compresi tra 10 e 100\n\n");
    scanf ("%d", &n);
    { if (n>=10 && n<=100) {
    for (i=1; i<=10; i++)
    scanf ("%d", &a[i]); }


    else
    printf ("Numero non valido\n");
    } //LA PARTE SEGUENTE SO CHE BISOGNA FARLA IN UN ALTRO MODO, PER QUESTO NON L'HO COMPLETATA...

    if (a[1] != a[2] && a[1] != a[3] && a[1] != a[4] && a[1] != a[5] && a[1] != a[6] && a[1] != a[7] && a[1] != a[8] && a[1] != a[9] && a[1] != a[0])
    printf ("%d\n", a[1]);

    system ("PAUSE");
    return 0;

    }

  4. #4
    PS. qui l'ho fatta solo per 10 numeri, per finire prima...

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    45
    Originariamente inviato da mendelssohn87
    scanf ("%d", &n);
    { if (n>=10 && n<=100) {
    for (i=1; i<=10; i++)
    scanf ("%d", &a[i]); }
    { ??
    comunque l'if dovrebbe stare all'interno del ciclo for:
    codice:
    for (int i=0; i<=10; i++)
    	{
    			scanf ("%d", &n); 
    			if (n>=10 && n<=100) {
    				a[i] = n;
    			}else{
    				printf ("Numero non valido\n");
    				i--;
    			}
    	}


    if (a[1] != a[2] && a[1] != a[3] && a[1] != a[4] && a[1] != a[5] && a[1] != a[6] && a[1] != a[7] && a[1] != a[8] && a[1] != a[9] && a[1] != a[0])
    printf ("%d\n", a[1]);

    system ("PAUSE");
    return 0;

    }
    E anche qui dovresti usare un ciclo for...

  6. #6
    Il problema è proprio questo. non mi viene un ciclo for idoneo.

    Io ho fatto così:

    #include <stdio.h>
    #include <stdlib.h>


    int main()
    {
    int a[10], j=0, n, i=0;
    printf ("Immetti 10 numeri compresi tra 10 e 100\n\n");

    for (i=0; i<10; i++)
    {
    scanf ("%d", &n);
    if (n>=10 && n<=100) {
    a[i]=n; }

    else {
    printf ("Numero non valido\n");
    i--;
    }}
    printf("\n\nElenco dei numeri senza ripetizioni:\n");
    for (j=0; j<10; j++)
    {
    if (a[j] != a[j+1])
    printf ("%d\n", a[j]);
    }
    system ("PAUSE");
    return 0;

    }


    ma in questo modo elimino solo quelli che hanno la ripetizione nel numero consecutivo, non riesco a trovare il modo giusto.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    45
    non serve esattamente per quello che devi fare tu, pero prova a prendere spunto da questo:
    http://nopaste.info/41303ef04d.html
    (corretto su questo forum con l'aiuto di MacApp e shodan )
    comunque quando devi mettere una porzione di codice usa i tag code [.CODE] [./CODE] (senza i puntini)...
    PS:
    codice:
    else {
    printf ("Numero non valido\n");
    i--;
    }}
    i-- levalo mi ero sbagliato ^^

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Separa il problema in sottoproblemi più semplici:

    "Scrivere un programma che legga in input 20 numeri"
    --> Leggere un numero in input e ripetere l'operazione un numero determinato di volte.

    "ognuno dei quali compreso tra 10 e 100, estremi inclusi."
    --> Il numero è da considerarsi "letto" solo se rispetta questo criterio.

    "Per ogni numero letto, visualizzarlo solo se non è un duplicato di uno già letto."
    --> Dovrai memorizzare da qualche parte i numeri già letti.

    "Utilizzare il vettore più piccolo per risolvere il problema."
    --> Dato che devi memorizzare ogni numero che è già stato inserito, se non c'è nessun duplicato i numeri sono proprio 20.

    Perciò, il tuo codice avrà una struttura di questo tipo.
    codice:
    int main()
    {
        for (i = 0; i < 20; i++)
        {
            n = leggi_numero();
            if ( !già_letto(n) ) stampa_numero(n);
        }
    }
    In questo modo separi il programma nei suoi componenti logici: prima avevi un grosso problema, ora sono 3 più piccoli, ovvero:

    _ definire una funzione leggi_numero() che legga un numero che rispetti le condizioni date
    _ definire una funzione già_letto() che sia in grado di ricordare se un numero è stato inserito
    _ risolvere il problema appoggiandoti alle due funzioni definite sopra.
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  9. #9
    #include <stdio.h>
    #include <stdlib.h>

    void confronto(int i, int Vettore[]);

    int main(int argc, char *argv[])
    {
    int Numeri[7]={0};
    int cont=0;
    int x;

    while (cont<7)
    {
    printf("inserisci un numero tra 20 e 100 \n");
    scanf("%d", &x);
    while (x<20 || x>100)
    {
    printf("inserisci un numero valido \n");
    scanf("%d", &x);
    }

    confronto(x, Numeri);

    Numeri[cont]=x;

    cont++;
    }


    system("PAUSE");
    return 0;
    }

    void confronto(int i, int Vettore[])
    {
    int j=0;

    while(j<7)
    {
    if (i == Vettore[j])
    {
    j=9;
    }

    else
    j++;
    }
    if (j==7)
    printf("%d\n", i);
    }

  10. #10
    scusa, invece che di 20 caratteri l'ho fatto di 7 per testare il programma con più facilità!
    =)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.