Due esercizi C++

di il
3 risposte

Due esercizi C++

Ragazzi, avrei bisogno di aiuto per la risoluzionde di questi esercizi di C++

1) Scrivere una funzione che inverta gli elementi di un array che contiene valori a virgola mobile.

void reverse (double a[], int a_size)

Per scorrere gli elementi dell'array la funzione deve utilizzare due variabili puntatore e non contatori interi.

2) Scrivere la funzione mostrata di seguito.

void reverse (char s[])

Questa funzione inverte una stringa di caratteri. Per sempio "Harry" diventa "yrraH".


1) Per quanto riguarda il primo esercizio ho scritto la funzione in questo modo:
void reverse (double a[], int a_size)

{

    int size = a_size;
    for (int i = 0; i < a_size/2; i++)

    {
        double temp = *(a+i);
        *(a+i) = a[size-i-1];
        a[size-i-1] = temp;

    }

Però come potete vedere è senza variabili puntatore che sinceramente non ho capito come vanno utilizzate in questo contesto. Come andrebbe scritta la funzione con le variabili puntatore?

2) Il secondo esercizio invece non ho proprio idea di come risolverlo. Potete aiutarmi?

3 Risposte

  • Re: Due esercizi C++

    Il primo esercizio sono riuscito a risolverlo, per il secondo se ha qualcuno ha qualche idea...
  • Re: Due esercizi C++

    Per il secondo crei un nuovo array char della stessa dimensione, poi con un for ti passi ogni valore dell'array passato sotto parametro, e lo metti in questa posizione nel nuovo array:
    sizeof(vecchio_array)-i
    Poi ritorni il nuovo array riempito
  • Re: Due esercizi C++

    Il secondo l'ho risolto così:
    
    #include<iostream>
    
    using namespace std;
    
    void reverse (char s[])
    
    {
         int i=0;
         while (s[i] != '\0')
         i++;
         int size = i;
    
         char* first = s;
         char* last = (s + (size-1));
    
         while (first < last)
    
         {   char temp = *first;
             *first = *last;
             *last = temp;
             first++;
             last--;
    
         }
    
    
    }
    
    
    void print (char s[], int a_size)
    
    
    
    {
    
        for (int i = 0; i < a_size; i++)
    
        cout << s[i] << endl;
    
    }
    
    
    
    
    int main()
    
    {
      char a[5];
    
      a[0] = 'c';
      a[1] = 'i';
      a[2] = 'a';
      a[3] = 'o';
      a[4] = '\0';
    
      print (a,5);
    
      reverse (a);
    
      print (a,5);
    
      return 0;
    
    }
    
    Che dite può andare bene?
Devi accedere o registrarti per scrivere nel forum
3 risposte