Risultati da 1 a 6 di 6

Discussione: Valore Assoluto

  1. #1
    New Member
    Data Registrazione
    15-01-2006
    Messaggi
    11

    Valore Assoluto

    ..ragazzi qualcuno mi sa dire un modo + semplice per fare un confronto dei valori di un array (che vanno da -20 a 20) in valore assoluto?

    Mi hanno parlato dell'abs ma è un comando che ancora non ho studiato...se provo a far moltiplicare i valori negativi per -1, dopo quando ristampa tutti i dati dell'array, quelli negativi sono positivi e invece a me serve solo x il confronto per trovare il massimo e il minimo in val. assoluto


    Spero sia stato chiaro..

    Grazie

  2. #2
    Senior Member
    Data Registrazione
    31-12-2005
    Messaggi
    102
    intanto dovresti dire il linguaggio, supponendo sia il C puoi fare una funzione tu:

    Codice:
    float valore_assoluto(float a){
      return (a<0)?:(-a):a;
    }
    oppure
    Codice:
    float valore_assoluto(float a){
      if(a<0) return -a;
      return a;
    }
    O comunque se il valore è minore di zero prendi a*(-1) altrimenti non fai nessun cambiamento.

    Ovviamente se sono interi metti int al posto di float.

    Comunque la funzione abs non è niente di trascendentale, abs(numero) ti restituisce il valore assoluto del numero.

  3. #3
    New Member
    Data Registrazione
    15-01-2006
    Messaggi
    11
    Grazie mille x avermi risposto e scusa se ho dimenticato di dirti il linguaggio..si cmq è il C

    il problema è che deve vedere in valore assoluto solo durante la ricerca del massimo e del minimo..non deve trasformare definitivamente i numeri col valoe assoluto...Allora ho pensato di usare l'abs..ma uso il comando abs(variabile) ma non va

    per esempio :



    Ricerca del minimo

    min=a[0][0];
    for (k=0;k<r;i++)
    {
    for (j=0;j<c;j++)
    {

    if (a[k][j]<min)
    {
    min=a[k][j];
    rmin=k;
    cmin=j;
    }
    else
    min=min;
    }
    }


    Ora purtroppo l'abs è un comando che non ho mai incontrato e tutti mi hanno detto di fare semplicemente come te..allora ho provato a scrivere

    if (abs(a[k][j])<min)

    ed ho provato ad inserirlo pure nell'assegnazione di min

    min=abs(a[k][j]);

    e purtroppo tra valori di -20 e 20 come minimo mi vede sempre -20 (e in valore assoluto non dovrebbe esserlo)

  4. #4
    Senior Member
    Data Registrazione
    31-12-2005
    Messaggi
    102
    dentro il primo ciclo for usi k come indice ma incrementi i, e poi non c'è bisogno che metti else min=min. Il resto sembra giusto e c'è qualche parentesi graffa che potresti pure risparmiasti ma non fa mai male.
    Ti riscrivo il codice testato e funzionante.
    Codice:
        int min=a[0][0],rmin=0,cmin=0;
        for(int i=0;i<r;i++)
          for(int j=0;j<c;j++)
            if(abs(a[i][j])<min){
               min=abs(a[i][j]);
               rmin=i;
               cmin=j;
            }

  5. #5
    New Member
    Data Registrazione
    15-01-2006
    Messaggi
    11
    x il K nn era un errore...nel sorgente è i nn K ma qui avevo cambiato x colpa del corsivo e ho dimenticato di cambiare l'incremento

    Cmq continuo a ringraziarti x la tua pazienza...però nn so perkè...nn funge bene..xkè come massimo prende pure il valore -20 (ke poi è trasformato in +20 con l'abs)...ma x quanto riguarda il minimo anche se i vari numeri variano da -20 a +20..con l'abs come valore minimo prende -20


    int max=a[0][0], min=a[0][0],rmax=0,cmax=0,rmin=0,cmin=0;


    for (i=0;i<r;i++)
    for (j=0;j<c;j++)
    {

    if (abs(a[i][j])>max)
    {
    max=abs(a[i][j]);
    rmax=i;
    cmax=j;
    }
    else if (abs(a[i][j])<min)
    {
    min=abs(a[i][j]);
    rmin=i;
    cmin=j;
    }
    e continuo a non capire :\

  6. #6
    Senior Member
    Data Registrazione
    31-12-2005
    Messaggi
    102
    ho provato il tuo codice e mi funziona alla perfezione. Forse l'errore sta da qualche altra parte. Ti metto il sorgente completo qui
    Genero prima una matrice casuale di interi tra -20 e +20 e poi ne calcolo minimo e massimo col tuo algoritmo, e funziona correttamente.

Segnalibri

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •