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

Discussione: [C] costrutto switch

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    37

    costrutto switch in C

    salve ragazzi. Ho problemi con il costrutto switch. Il testo d'un problema mi chiedeva :
    " con un costrutto switch (exp) confrontare i valori delle due espressioni:
    2/5-(S1-2S2)/(3(1+N*N) e 3/(7N+1)+(N*N*N)/6
    io ho svolto poco e niente:
    / * confronto valori espressioni */
    valore1 = 2/5 – (S1-2S2)/(3(1+N*N)) ;
    valore2= 3/(7*N+1)+(N*N*N)/6 ;
    switch .....
    non saprei come proseguire.
    spero nel vostro aiuto.

    alex


    p.s. ma per deallocare una matrice allocata con doppio puntatore...essendo la matrice m x n come devo procedere?
    vi ringrazio

  2. #2
    "Confrontare" in che senso?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    37

    Re: costrutto switch

    Originariamente inviato da bad.alex
    salve ragazzi. Ho problemi con il costrutto switch. Il testo d'un problema mi chiedeva :
    " con un costrutto switch (exp) confrontare i valori delle due espressioni:
    2/5-(S1-2S2)/(3(1+N*N) e 3/(7N+1)+(N*N*N)/6
    io ho svolto poco e niente:
    / * confronto valori espressioni */
    valore1 = 2/5 – (S1-2S2)/(3(1+N*N)) ;
    valore2= 3/(7*N+1)+(N*N*N)/6 ;
    switch .....
    non saprei come proseguire.
    spero nel vostro aiuto.

    alex
    si...ho dimenticato: devo indicare con un messaggio se il primo valore è <= del secondo.

  4. #4
    codice:
    int diff=valore1-valore2;
    switch(diff/abs(diff))
    {
        case 1:
            puts("valore1 > valore2");
            break;
        case 0:
            puts("valore1 = valore2");
            break;
        case -1:
            puts("valore1 < valore2");
            break;
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    37
    Originariamente inviato da MItaly
    codice:
    int diff=valore1-valore2;
    switch(diff/abs(diff)
    {
        case 1:
            puts("valore1 > valore2");
            break;
        case 0:
            puts("valore1 = valore2");
            break;
        case -1:
            puts("valore1 < valore2");
            break;
    }
    mmm....l'exp di switch è??come mai hai dichiarato diff=valore1 - ...?
    sono principiante, perdonami

  6. #6
    L'espressione dello switch è diff/abs(diff) (tra l'altro mi ero dimenticato di chiudere una parentesi, ora ho corretto). L'idea è di sottrarre un numero all'altro: se il risultato è 0 allora i due numeri sono uguali, se è positivo il primo numero è più grande del secondo, se è negativo il secondo è più grande del primo. A questo punto divido questa differenza per il suo valore assoluto (sempre positivo), in modo da ottenere semplicemente tre casi che mi indicano il segno del numero (-1, 0, +1), che vado poi ad esaminare tramite lo switch.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    37
    Originariamente inviato da bad.alex
    mmm....l'exp di switch è??come mai hai dichiarato diff=valore1 - ...?
    sono principiante, perdonami
    posso approfittare della tua preparazione ( e bontà!) per chiederti un altro aiuto?
    avendo una matrice di 2N+3 righe e 2 colonne, con un costrutto for dovrei inizializzare, procedendo per righe ( immagino for ( i=0; i<=2N+2;i++) ; le componenti delle 2 colonne con l'inverso del triplo di 2N+3 numeri naturali dispari decrescenti dei quali il primo è 4N+5.....
    perdonami ma per me è qualcosa di incomprensibile. Mi dispiace di essere così imbranato...quando si dice una persona ti dà la mano....e tu ti prendi tutto il braccio

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    37
    Originariamente inviato da MItaly
    L'espressione dello switch è diff/abs(diff) (tra l'altro mi ero dimenticato di chiudere una parentesi, ora ho corretto). L'idea è di sottrarre un numero all'altro: se il risultato è 0 allora i due numeri sono uguali, se è positivo il primo numero è più grande del secondo, se è negativo il secondo è più grande del primo. A questo punto divido questa differenza per il suo valore assoluto (sempre positivo), in modo da ottenere semplicemente tre casi che mi indicano il segno del numero (-1, 0, +1), che vado poi ad esaminare tramite lo switch.
    VVoVe: fenomenale è dir poco...ah...come vorrei essere preparato come te.

  9. #9
    Non c'è nulla di così fenomenale... piuttosto l'esercizio è demenziale, in un caso del genere aveva molto più senso usare degli if
    codice:
    if(valore1>valore2)
        puts("valore1>valore2");
    else if(valore1<valore2)
        puts("valore1<valore2");
    else
        puts("valore1=valore2");
    o, volendo confondere le acque
    codice:
    printf("valore1 %c valore2",(valore1>valore2)?'>':((valore1<valore2)?'<':'=');
    (ecco, questo non lo scriverei mai in un programma vero ).
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    37
    Originariamente inviato da MItaly
    Non c'è nulla di così fenomenale... piuttosto l'esercizio è demenziale, in un caso del genere aveva molto più senso usare degli if
    codice:
    if(valore1>valore2)
        puts("valore1>valore2");
    else if(valore1<valore2)
        puts("valore1<valore2");
    else
        puts("valore1=valore2");
    o, volendo confondere le acque
    codice:
    printf("valore1 %c valore2",(valore1>valore2)?'>':((valore1<valore2)?'<':'=');
    (ecco, questo non lo scriverei mai in un programma vero ).
    il costrutto if else if è l'unico che conosco meglio....infatti il prof non l'ha inserito nel testo. MItaly...è troppo chiederti di spiegarmi la seconda parte? se è di tua competenza. Il prof si è dimostrato nulla al confronto con te

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.