Visualizzazione risultati 1 fino 8 di 8

Discussione: Programmimo del cavolo in C che non ne vuole sapere....

  1. #1
    web3 non è connesso AlterVistiano
    Data registrazione
    10-09-2002
    Messaggi
    761

    Predefinito

    Sto iniziando piano piano a programmare in C e ho scritto un programma che DOVREBBE trovare i numeri primi compresi tra due numeri introdotti dall'utente ma non lo fa.... dopo averci passato sopra 2 ore mi sono arreso.... forse qualcuno di voi + bravo (non è difficile ) e più lucido possa risolvere il mio dilemma in un batter d'occhio.....


    Ecovi qui il listato.....
    Grazie...

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    main()
    {

    int i, k, id, cont, druv, a;
    cont=0;
    druv=0;
    a=0;
    k==0;
    printf("Questo programma trova i numeri primi compresi tra i due numeri che adesso ti verranno richiesti. \n");

    printf("Immetti il primo numero e premi ENTER. \n");
    scanf("%d", &i);

    printf("Immetti il secondo numero e premi ENTER. \n");
    scanf("%d", &id);

    for(i=1; i<=id; i=i+1)

    {

    for(k=1; k<=i; k=k+1)
    {
    druv=i % k;
    if( druv == 0)
    {cont=cont+1;}
    }


    if(cont==2)
    {printf("%d\n", i);
    a=a+1;}


    }

    if (a=0)
    printf("Tra i numeri che hai scelto non c'è nessun numero primo \n");
    system("pause");
    }

  2. #2
    Guest

    Predefinito

    Ciao, ho un po' guardato il tuo programma e non e' che ci abbia capito molto...
    Ho notato comunque alcuni errori (o sviste :) ). L'operatore di uguaglianza e' == quindi nell' if finale devi mettere if (var1==var2)
    L'operatore di assegnamento e' = quindi all'inizio quel k==0 non serve a nulla. Poi nel ciclo for iniziale usi la variabile i come variabile di conteggio che parte da uno, sovrascrivendo cosi' il valore del primo numero inserito dall'utente e salvato con scanf.
    Sinceramente noon capisco bene i for interni, cosi' ho rifatto il programma da zero usando una funzione primo() che dice se un numero e' primo o meno, e la richiamo per tutti i numeri compresi tra quelli inseriti.

    Ecco il codice, spero ti possa aiutare :)

    #include <stdio.h>

    int primo(int num);

    /*programma principale*/
    void main(void)
    {
    int num1, num2, i, count=0;

    printf("Inserire il primo numero: ");
    scanf("%d", &num1);
    printf("Inserire il secondo numero: ");
    scanf("%d", &num2);

    printf("Verranno ora stampati i numeri primi compresi tra %d e %d\n", num1, num2);

    for(i=num1; i<=num2; i++)
    {
    if( primo(i) )
    {
    printf("%d\n", i);
    count++;
    }
    }

    printf("Sono stati trovati %d numeri primi\n", count);
    }

    /*funzione che indica se num è primo o meno. Ritorna 1 se è primo, 0 altrimenti*/
    int primo(int num)
    {
    int i, primo=1;
    for(i=2; i<num ;i++)
    {
    if(num%i == 0) primo=0;
    }
    return primo;
    }

  3. #3
    web3 non è connesso AlterVistiano
    Data registrazione
    10-09-2002
    Messaggi
    761

    Predefinito

    Il mio "programma" in c è una trascrizione di un programma fatto a scuola in turbo pascal (quello xò funziona)...
    Concettualmente è semplice... non so perchè non funzioni (ho anche corretto quello che mi hai detto) in pratica prende un numero i , ne ottiene il restoo della divisione per tutti i precedenti (k) grazie a due cicli for ingolobati. e se il risul tato viene solo 2 volte 0 (il nmero priomo diviso sè stesso e diviso 1) allora los scrive..... questo è il sorgento corretto grazie a mauro..... ma non funzia cmq


    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    main()
    {

    int i, k, id, cont, druv, a;
    cont=0;
    druv=0;
    a=0;
    k=0;
    printf("Questo programma trova i numeri primi compresi tra i due numeri che adesso ti verranno richiesti. \n");

    printf("Immetti il primo numero e premi ENTER. \n");
    scanf("%d", &i);

    printf("Immetti il secondo numero e premi ENTER. \n");
    scanf("%d", &id);

    for(i=1; i<=id; i=i+1)

    {

    for(k=1; k<=i; k=k+1)
    {
    druv=i % k;
    if( druv == 0)
    {cont=cont+1;}
    }


    if(cont==2)
    {printf("%d\n", i);
    a=a+1;}


    }

    if (a==0)
    printf("Tra i numeri che hai scelto non c'è nessun numero primo \n");
    system("pause");
    }

  4. #4
    Guest

    Predefinito

    printf("Immetti il primo numero e premi ENTER. \n");
    scanf("%d", &i);

    printf("Immetti il secondo numero e premi ENTER. \n");
    scanf("%d", &id);

    for(i=1; i<=id; i=i+1)
    Scusa, ma prima dai ad 'i' il valore scelto dall'utente e poi lo "sovrascrivi" a 1? Perchè?

  5. #5
    Guest

    Predefinito

    P.S.:
    Quello di maurogaggero funziona

  6. #6
    web3 non è connesso AlterVistiano
    Data registrazione
    10-09-2002
    Messaggi
    761

    Predefinito

    Citazione Originalmente inviato da prometheus
    P.S.:
    Quello di maurogaggero funziona
    Lo so.... ma io vorrei che funzionasse anke il miot :(


    Citazione Originalmente inviato da prometheus
    printf("Immetti il primo numero e premi ENTER. \n");
    scanf("%d", &i);

    printf("Immetti il secondo numero e premi ENTER. \n");
    scanf("%d", &id);

    for(i=1; i<=id; i=i+1)
    Scusa, ma prima dai ad 'i' il valore scelto dall'utente e poi lo "sovrascrivi" a 1? Perchè?

    Che Grande cavolata! Cmq quello è stato un errore fatto x stranchezza dopo 2 ore correggendo 1 cosa giusta...... anche così nn funzia...


    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    main()
    {

    int i, k, id, cont, druv, a;
    cont=0;
    druv=0;
    a=0;
    k=0;
    printf("Questo programma trova i numeri primi compresi tra i due numeri che adesso ti verranno richiesti. \n");

    printf("Immetti il primo numero e premi ENTER. \n");
    scanf("%d", &i);

    printf("Immetti il secondo numero e premi ENTER. \n");
    scanf("%d", &id);

    for(i=i; i<=id; i=i+1)

    {

    for(k=1; k<=i; k=k+1)
    {
    druv=i % k;
    if( druv == 0)
    {cont=cont+1;}
    }


    if(cont==2)
    {printf("%d\n", i);
    a=a+1;}


    }

    if (a==0)
    printf("Tra i numeri che hai scelto non c'è nessun numero primo \n");
    system("pause");
    }

  7. #7
    Guest

    Predefinito

    1) suggerisco di trovare nomi più descrittivi per le variabili ... altrimenti a capire cosa intendi ad ogni riga di codice è un po' dura

    2)
    for(i=i; i<=id; i=i+1)
    {



    for(k=1; k<=i; k=k+1)
    {
    druv=i % k;
    if( druv == 0)
    {cont=cont+1;}
    }

    if(cont==2)
    {printf("%d\n", i);
    a=1;}



    }


    Una volta fatto il primo giro, il cont rimane "contaminato": occorre azzerarlo ad ogni iterazione:


    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    main()
    {

    int i, k, id, cont, druv, a;
    cont=0;
    druv=0;
    a=0;
    k=0;

    printf("Questo programma trova i numeri primi compresi tra i due numeri che adesso ti verranno richiesti. \n");

    printf("Immetti il primo numero e premi ENTER. \n");
    scanf("%d", &i);

    printf("Immetti il secondo numero e premi ENTER. \n");
    scanf("%d", &id);

    for(i=i; i<=id; i=i+1)
    {



    for(k=1; k<=i; k=k+1)
    {
    druv=i % k;
    if( druv == 0)
    {cont=cont+1;}
    }

    if(cont==2)
    {printf("%d\n", i);
    a=1;}

    cont=0;



    }

    if (a==0)
    printf("Tra i numeri che hai scelto non c'è nessun numero primo \n");
    system("pause");
    }

  8. #8
    web3 non è connesso AlterVistiano
    Data registrazione
    10-09-2002
    Messaggi
    761

    Predefinito

    Ke ca**** non so come ringraziarti.... se hai bisogno di qualcosa chiedi pure!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •