Problema stampa con un doppio puntatore

di il
16 risposte

16 Risposte - Pagina 2

  • Re: Problema stampa con un doppio puntatore

    broke31 ha scritto:


    non ho capito come fai a fermare il for se come condizione imponi --l
    in C la condizione è falsa se l'espressione è uguale a zero, vera se diversa da zero.
    Il trucchetto della condizione --l si basa su questo principio, al fine di non usare un'ulteriore variabile per iterare, ma dobbiamo procedere a ritroso cioè dall'ultimo elemento (l-1) fino al 1 (l'elemento 0 lo abbiamo già caricato). Questo spiega il decremento e poi la verifica della condizione.

    broke31 ha scritto:


    i punti interrogativi sarebbero gli if giusto?
    L'operatore ternario è pari ad un blocco IF/ELSE scritto in forma compatta, ed ha questa forma:
    
      ...
      value = (exp1) ? (exp2) : (exp3);
      ...
    
    corrispondente a:
    
      ...
      if (exp1)
        value = (exp2);
      else
        value = (exp3);
      ...
    
    Nel ciclo ho scelto di usare l'operatore ternario non tanto per ridurre il numero righe da scrivere, ma per una prontezza visiva a favore del programmatore distinguibile nell'esempio sotto. E' comunque preferibile la forma IF per evitare le inutili riassegnazioni
    
       ...
       FOR (....) {
          MIN=(exp)?(exp):min;
          MAX=(exp)?(exp):min;
       }
       ...
       FOR (....) {
          IF (exp)
             MIN=(exp);
          IF (exp)
             MIN=(exp);         
       }
       ...
    
    Se poi piace la stessa versione con un accorpamento decisamente criptico:
    
    int minimo_massimo(int *v, int l, int **min, int **max)
    {
        if (v && l>0)
            for (*min=*max=v;--l;*min=**min>v[l]?v+l:*min,*max=**max<v[l]?v+l:*max);
        else
            l=-1;
    
        return l;
    }
    
  • Re: Problema stampa con un doppio puntatore

    Grazie per i consigli li terrò sempre a mente da oggi in poi !sto già ricominciando a scrivere per provare il ciclo così e anche l'if else così solo che se la condizione nell'else manca il mio compilatore si arrabbia es:
    (scelta==1)?printf("scelta):scelta;//se non metto :scelta si arrabbia e non mi fa compilare idem se chiudo la printf con il punto e virgola
Devi accedere o registrarti per scrivere nel forum
16 risposte