esercizi parte 1 (Programmazione C) lez#10

แชร์
ฝัง
  • เผยแพร่เมื่อ 7 ม.ค. 2025

ความคิดเห็น •

  • @caput.mundii
    @caput.mundii 4 ปีที่แล้ว +5

    boh mi stai tipo salvando la vita! Ringraziarti sarebbe poco! i tuoi video sono molto esaustivi, chiari e utili!

  • @michelepollidoro1474
    @michelepollidoro1474 2 ปีที่แล้ว

    Interessante la cosa degli esercizi, una bella trovata

  • @francescolapietra930
    @francescolapietra930 5 ปีที่แล้ว +10

    io al posto di utilizzare gli else if ho fatto così:
    /*programma che permette di scrivere due date e stampare a video quella più recente*/
    #include
    int main()
    {
    int giorno1, mese1, anno1, giorno2, mese2, anno2;
    printf("
    inserire la prima data:
    ");
    scanf("%d/%d/%d", &giorno1,&mese1,&anno1);
    printf("
    inserire la seconda data:
    ");
    scanf("%d/%d/%d", &giorno2,&mese2,&anno2);
    if(anno1>anno2 || (anno1==anno2 && mese1>mese2) || (anno1==anno2 && mese1==mese2 && giorno1>giorno2))
    printf("
    %d/%d/%d è la più recente
    ",giorno1,mese1,anno1);
    else
    printf("
    %d/%d/%d è la più recente
    ",giorno2,mese2,anno2);
    return 0;
    }
    funziona e il codice è anche più corto

  • @J_canale
    @J_canale 5 ปีที่แล้ว +2

    Funziona ma farei qualche correzione sui "//casi futuri"
    /*
    Scrivere un programma che chieda di inserire 2 date nel formato gg/mm/aaaa e stampi la più recente
    */
    #include
    #include
    int main(){
    int giorno1, mese1, anno1; //dichiaro tre interi per la prima data
    int giorno2, mese2, anno2; //dichiaro tre interi per la seconda data
    printf("PROGRAMMA CHE STAMPA LA DATA PI%c RECENTE", 235);
    //acquisizione dati
    printf("

    Inserire una data col formato gg/mm/aaaa: ");
    scanf("%d/%d/%d", &giorno1,&mese1,&anno1);
    printf("Inserire una seconda data col formato gg/mm/aaaa: ");
    scanf("%d/%d/%d", &giorno2,&mese2,&anno2);
    //elenco tutti i casi in cui la prima data è più recente (quindi più grande) della seconda
    if(anno1>anno2){
    printf("
    La prima data inserita %c la pi%c recente

    ",138,151);
    }else if(anno1==anno2 && mese1>mese2){
    printf("
    La prima data inserita %c la pi%c recente

    ",138,151);
    }else if(anno1==anno2 && mese1==mese2 && giorno1>giorno2 && giorno111 && anno1>2019 && giorno2>27 && mese2>11 && anno2>2019){
    printf("
    Sono state inserite date future

    ");
    }else if(giorno1>27 && mese1>11 && anno1>2019){
    printf("
    La prima data inserita %c futura

    ",138);
    }else if(giorno2>27 && mese2 >11 && anno2>2019){
    printf("
    La seconda data inserita %c futura

    ",138);
    }else if(anno1>2019 && anno2>2019){
    printf("
    Sono state inserite date future

    ");
    }else if(anno1>2019){
    printf("
    La prima data inserita %c futura

    ",138);
    }else if(anno2>2019){
    printf("
    La seconda data inserita %c futura

    ",138);
    }
    return 0;
    }
    Pareri?

  • @BlackSoulChloe
    @BlackSoulChloe 4 ปีที่แล้ว +4

    Il mio problema più grande è che capisco i codici scritti, ma non so implementarli da sola. Spero che con la pratica e i tuoi video, studiando, riesca a superare 'sto enorme ostacolo.

    • @eddieed248
      @eddieed248 ปีที่แล้ว +1

      Ciao questo succede perché studi i linguaggi ma non la logica di programmazione. Si tratta di suddividere il problema in dichiarazione delle variabili primitive, array, struct etc.. poi se ci vuole un ciclo, se esistono delle condizioni ed il ritorno dei valori chiusura del programma . La difficolta sta nel passare dal pensiero-linguaggio umano-traduzione in linguaggio pc.

  • @Da_Unit
    @Da_Unit 4 ปีที่แล้ว +3

    L'esercizio 2 l ho fatto cosi,
    l ho fatto e rifatto due volte ma il vero problema era interpretare piu che scrivere
    #include
    int main(){

    int a,b,r;

    printf("inserisci due numeri :
    ");
    scanf("%d %d",&a,&b);

    while (b != 0) {
    r = b;
    b = a % b;
    a = r;

    }
    printf("%d
    ",a);
    return 0;
    }

  • @dvltem
    @dvltem 4 ปีที่แล้ว +1

    Se vorreste il primo esercizio scritto correttamente ecco qui:
    //Scrivere un programma che chieda di inserire due date nel formato gg/mmmm/aaaa e stampi la meno recente.
    #include
    #include
    int main(int argc, const char * argv[]) {
    int g1, m1, a1;
    int g2, m2, a2;
    //Richiesta del giorno (prima data).
    printf("Inserisci il giorno di nasciata della prima data.
    ");
    scanf("%d", &g1);
    if (g131) {
    printf("
    Il giorno di nascita non è reale.
    ");
    exit(0);
    }
    //Richiesta del mese (prima data).
    printf("
    Inserisci il mese di nasciata della prima data.
    ");
    scanf("%d", &m1);
    if (m112) {
    printf("
    Il mese di nascita non è reale.
    ");
    exit(0);
    }
    //Richiesta dell'anno (prima data).
    printf("
    Inserisci l'anno di nasciata della prima data.
    ");
    scanf("%d", &a1);
    if (a1

  • @TheNapolinews
    @TheNapolinews 7 ปีที่แล้ว +1

    So che non è ancora stato trattato nel corso, ma qui non conviene utilizzare un array di struct?

  • @pardo239
    @pardo239 4 ปีที่แล้ว

    l'esercizio 1 fatto nel modo più semplice (si poteva anche utilizzare switch)
    #include
    int main(void) {
    int giorno1, mese1, anno1, giorno2, mese2, anno2;
    printf("inserire prima data
    ");
    scanf("%d%d%d",&giorno1,&mese1,&anno1);
    printf("inserire seconda data
    ");
    scanf("%d%d%d",&giorno2,&mese2,&anno2);
    if (giorno1>32 || giorno132 || giorno2anno2){
    printf("la prima data è la più recente");
    return 0;}
    if (anno1mese2){
    printf("la prima data è la più recente");
    return 0;
    }
    if (mese1giorno2){
    printf("la prima data è la più recente");
    return 0;
    }
    if (giorno1

  • @filosadventures2341
    @filosadventures2341 3 ปีที่แล้ว

    ma nell esercizio 3 nell'else in cui r=a%b e r==0 non è detto che b sia l' MCD, potrebbe essere un divisore qualsiasi, ma non il maggiore. giusto ?

  • @pierpaolodellavecchia9725
    @pierpaolodellavecchia9725 3 ปีที่แล้ว

    Perchè su eclipse i printf me li butta tutti alla fine del programma in console, nonostante il codice è scritto nell'ordine giusto?

  • @dvltem
    @dvltem 4 ปีที่แล้ว

    Il secondo esercizio scritto con più precisione e particolari:
    //Dati 2 numeri interi A e B, si controlli se B è uguale a 0, se lo è, A è il MCD. Se non lo è si divide A con B e si assegna ad R il resto della dicisione. Se R=0 allora si può affermare che B è il MCD, altrimenti bisogna assegnare A=B e B=R e si ripete di nuovo la divisione.
    #include
    #include
    int main(int argc, const char * argv[]) {
    int A, A1;
    int B, B1;
    int R;

    printf("Inserisci un numero intero.
    ");
    scanf("%d", &A);
    A1=A;

    printf("Inserisci un secondo numero intero.
    ");
    scanf("%d", &B);
    B1=B;

    if (B==0) {
    printf("%d è il massimo comune divisore fra %d e %d.
    ", A, A, B);
    exit(0);
    } else {
    do {
    R=A%B;
    if (R==0) {
    printf("%d è il massimo comune divisore fra %d e %d.
    ", B, A1, B1);
    exit(0);
    } else {
    A=B;
    B=R;
    }
    } while (R!=0);
    }
    return(0);
    }

  • @filosadventures2341
    @filosadventures2341 3 ปีที่แล้ว

    a cosa servonono le assegnazioni a=b e b=r?

  • @valerioduchi5152
    @valerioduchi5152 8 ปีที่แล้ว +6

    io ho fatto così e funziona:
    #include
    #include
    int main (int argc, const char argv[]){
    int a;
    int b;
    int r;
    printf("Inserire a e b: ");
    scanf("%d %d",&a,&b);
    while (b!=0){
    r=a%b;
    if(r!=0){
    a=b;
    b=r;
    }
    else
    {
    printf("%d e' il massimo comun divisore",b);
    exit(0);
    }
    }
    printf("%d e' il massimo comun divisore",a);
    }

  • @frankrenzulli4354
    @frankrenzulli4354 4 ปีที่แล้ว

    Per il primo esercizio io avrei aggiunto un controllo del mese e giorno inserito, però bella lo stesso!

  • @CloseWave
    @CloseWave 5 ปีที่แล้ว

    Esercizio1
    Inserire le date con gli "/" non me lo accetta.. devo fare 3 input diversi prima giorno poi mese poi anno ecc
    Sto usando WIndows con DEVC++ puo essere questo?

    • @lucacormano6324
      @lucacormano6324 5 ปีที่แล้ว

      Meglio usare CodeBlocks, anche a me dava quel problema con DEVC++

  • @christianorso2283
    @christianorso2283 3 ปีที่แล้ว

    Ho seguito i tuoi esempi, ma ho voluto esagerare; ho creato un programma più dettagliato (esercizio 1).
    #include
    #include
    int main (){
    int g1, m1, a1, g2, m2, a2;
    //////////////////////////////////////////////////////// prima data
    printf("PRIMA DATA
    ");
    printf("Inserisci il giorno
    ");
    scanf("%d", &g1);
    if(g10){

    }else{
    printf("che c**** di giorno hai messo");
    }

    printf("
    Inserisci il mese
    ");
    scanf("%d", &m1);
    if(m10){

    }else{
    printf("che c**** di mese hai messo");
    }

    printf("
    Inserisci l'anno
    ");
    scanf("%d", &a1);

    printf("%d/",g1);
    printf("%d/",m1);
    printf("%d",a1);

    //////////////////////////////////////////////////////// seconda data

    printf("


    SECONDA DATA
    ");

    printf("Inserisci il giorno
    ");
    scanf("%d", &g2);
    if(g20){

    }else{
    printf("che c**** di giorno hai messo");
    }

    printf("
    Inserisci il mese
    ");
    scanf("%d", &m2);
    if(m20){

    }else{
    printf("che c**** di mese hai messo");
    }

    printf("
    Inserisci l'anno
    ");
    scanf("%d", &a2);

    printf("%d/",g2);
    printf("%d/",m2);
    printf("%d",a2);

    //////////////////////////////////////////////////////// qual'è la più grande tra le 2

    printf("


    Qual' e' la piu' grande?
    ");

    if(a1>a2){
    printf("la prima data e' piu' grande");
    exit(0);
    }

    if(a1m2){
    printf("la prima data e' piu' grande");
    exit(0);
    }
    if(m1g2){
    printf("la prima data e' piu' grande");
    exit(0);
    }
    if(g1

  • @andreasacco9933
    @andreasacco9933 7 ปีที่แล้ว +2

    non conviene usare lo switch con i vari casi ? aiutoooooooooo

    • @Aledan98
      @Aledan98 7 ปีที่แล้ว

      Infatti l'ho pensato anch'io.

  • @gennaroschiavone3114
    @gennaroschiavone3114 7 ปีที่แล้ว +2

    Ma sbaglio o ti sei confuso? Il tuo programma stampa la data più grande, non la più recente!

    • @stefanobaviello9110
      @stefanobaviello9110 7 ปีที่แล้ว +2

      la data più grande è la più recente, no?

    • @gennaroschiavone3114
      @gennaroschiavone3114 7 ปีที่แล้ว +1

      Stefano Baviello Quindi sei io inserisco 13/07/2017 e inserisco 13/07/2477, quest'ultima è la più recente?

    • @twitchmovies6121
      @twitchmovies6121 7 ปีที่แล้ว +1

      Stefano, Gennaro ha ragione
      Se stabilisci il formato della data in questa maniera: GG/MM/AA non si verifica il problema
      Se stabilisci la data nel formato: GG/MM/AAAA si verifica (E questo è il formato utilizzato nel video)

    • @ceskale
      @ceskale 7 ปีที่แล้ว

    • @lotationx8987
      @lotationx8987 5 ปีที่แล้ว

      @@gennaroschiavone3114 Dovresti mettere le condizioni di esistenza per giorni, mesi e anni (io ho messo gli anni compresi tra 0 e 2019)

  • @damianos.2954
    @damianos.2954 7 ปีที่แล้ว

    io l'ho fatto così e non prende l'input della seconda scanf quando eseguo:
    #include
    int main(int argc, const char * argv[]){
    int gio1, gio2, me1, me2, a1, a2;
    char a;
    printf("inserire data 1 nel formato gg/mm/aaaa
    ");
    scanf("%d,%d,%d", &gio1, &me1, &a1);
    printf("inserire data 2 nel formato gg/mm/aaaa
    ");
    scanf("%d,%d,%d", &gio2, &me2, &a2);
    if(a1>a2){
    printf("la prima data è più recente della seconda");}
    else if(a1=a2 && me1>me2){
    printf("la prima data è più recente della seconda");}
    else if(me1=me2 && gio1>gio2){
    printf("la prima data è più recente della seconda");}
    else if(gio1=gio2)
    printf("le date sono uguali");
    else
    printf("la seconda data è più recente della prima");
    }

    • @damianos.2954
      @damianos.2954 7 ปีที่แล้ว

      sono riuscito a correggere dasolo e funziona perfettamente ecco:
      /*scrivere un programma che legge 2 date in formato gg/mm/aaaa e stampa la più recente*/
      #include
      int main(int argc, const char * argv[]){
      int gio1, gio2, me1, me2, a1, a2;
      char a;
      printf("inserire data 1 nel formato gg/mm/aaaa
      ");
      scanf("%d/%d/%d", &gio1, &me1, &a1);
      printf("inserire data 2 nel formato gg/mm/aaaa
      ");
      scanf("%d/%d/%d", &gio2, &me2, &a2);
      if(a1>a2){
      printf("la prima data è più recente della seconda");}
      else if(a1==a2 && me1>me2){
      printf("la prima data è più recente della seconda");}
      else if(a1==a2 && me1==me2 && gio1>gio2){
      printf("la prima data è più recente della seconda");}
      else if(a1==a2 && me1==me2 && gio1==gio2)
      printf("le date sono uguali");
      else
      printf("la seconda data è più recente della prima");
      return 0;
      }

    • @jacopo6197
      @jacopo6197 7 ปีที่แล้ว +1

      +Damiano S. chi ti ha chiesto niente?

  • @VanniRigoni
    @VanniRigoni 2 ปีที่แล้ว

    Per il secondo esercizio credo che questa soluzione sia più corretta:
    #include
    int main(){
    int A,B,C;
    printf("Inserisci due numeri per calcolarne il Massimo Comune Divisore
    ");
    scanf("%d%d",&A,&B);
    if (B>A){
    C=A;
    A=B;
    B=C;
    }
    if (B==0){
    printf("%d è il Massimo Comune Divisore",A);
    }else{
    int R=A%B;
    while(R!=0){
    A=B;
    B=R;
    R=A%B;
    }
    printf("%d è il Massimo Comune Divisore",B);
    }}

  • @SatoKaido
    @SatoKaido 7 ปีที่แล้ว +2

    L'ho fatto breve ahah
    #include
    main() {
    int gg1; // le variabili delle date quindi 3 variabili per ogni data. Ogni variabile rappresenta o il giorno o il mese o l'anno.
    int mm1;
    int aaaa1;
    int gg2;
    int mm2;
    int aaaa2;
    //prima data
    do { printf("Inserisci il giorno della prima data
    "); // verifico se il giorno della prima data é valido
    scanf("%d",&gg1);
    if(gg131) {
    printf("il giorno che hai inserito non e valido
    ");
    }
    }
    while(gg131);
    printf("il giorno della prima data e %d
    ",gg1);

    do {
    printf("Inserisci il mese in numeri (es. Marzo=3) della prima data
    "); // verifico se il mese della prima data é valido
    scanf("%d",&mm1);
    if(mm112) {
    printf("il mese che hai inserito non e valido
    ");
    }
    }
    while(mm112);
    printf("il mese della prima data e %d
    ",mm1);

    printf("Inserisci l'anno della prima data
    ");
    scanf("%d",&aaaa1);
    printf("l'anno della prima data e %d
    ",aaaa1);

    // seconda data
    do { printf("Inserisci il giorno della seconda data
    "); // verifico se il giorno della seconda data é valido
    scanf("%d",&gg2);
    if(gg231) {
    printf("il giorno che hai inserito non e valido
    ");
    }
    }
    while(gg231);
    printf("il giorno della seconda data e %d
    ",gg2);

    do {
    printf("Inserisci il mese in numeri (es. Marzo=3) della seconda data
    "); // verifico se il mese della seconda data é valido
    scanf("%d",&mm2);
    if(mm212) {
    printf("il mese che hai inserito non e valido
    ");
    }
    }
    while(mm212);
    printf("il mese della seconda data e %d
    ",mm2);

    printf("Inserisci l'anno della seconda data
    ");
    scanf("%d",&aaaa2);
    printf("l'anno della seconda data e %d
    ",aaaa2);
    //inserimento delle 2 date completato
    printf(" la prima data che hai inserito e | %d | %d | %d |
    ",gg1,mm1,aaaa1);
    printf("la seconda data che hai inserito e | %d | %d | %d |
    ",gg2,mm2,aaaa2);
    if (aaaa1>=aaaa2) {
    if (aaaa1==aaaa2) {
    if(mm1>=mm2) {
    if(mm1=mm2) {
    if (gg1>=gg2) {
    if(gg1=gg2) {
    printf("le due date sono ugali");
    }
    else {
    printf(" la prima data e piu recente della seconda");
    }
    }
    else { printf("la seconda data e piu recente della prima");
    }
    }
    else {
    printf("la prima e piu recente della seconda");
    }

    }
    else {
    printf("la seconda data e piu recente della prima");
    }
    }
    else { printf("la prima data è piu recente della seconda");
    }
    }
    else {
    printf("la seconda data e' piu recente della prima");
    }

  • @lucamininno3800
    @lucamininno3800 3 ปีที่แล้ว

    //scrivere un programma che chieda di inserire due date nel formato gg/mm/aaa e stampi la più recente
    #include
    int main(){
    //definisco le variabili
    int giorno1,mese1,anno1;
    int giorno2,mese2,anno2;

    //input delle due date
    //data 1
    printf ("inserire data 1
    ");
    printf ("inserire il giorno1: ");
    scanf("%d", &giorno1);
    while(giorno1>31||giorno112||mese12021){printf("Anno futuro, inserirne uno passato o presente
    anno1: ");
    scanf("%d", &anno1);}
    printf("la data 1 è %d-%d-%d

    ", giorno1,mese1,anno1);

    //data 2
    printf ("inserire data 2
    ");
    printf ("inserire il giorno2: ");
    scanf("%d", &giorno2);
    while(giorno2>31||giorno212||mese22021){printf("Anno futuro, inserirne uno passato o presente
    anno2: ");
    scanf("%d", &anno2);}
    printf("la data 2 è %d-%d-%d

    ", giorno2,mese2,anno2);

    //confronto e stampo la più recente
    if(anno1>anno2){printf("la data più recente è la 1: %d-%d-%d

    ", giorno1,mese1,anno1);}
    else if(anno1mese2){printf("la data più recente è la 1: %d-%d-%d

    ", giorno1,mese1,anno1);}
    else if(mese1giorno2){printf("la data più recente è la 1: %d-%d-%d

    ", giorno1,mese1,anno1);}
    else if(giorno1