C++ - scambio argomenti con funzione ricorsiva

di il
8 risposte

C++ - scambio argomenti con funzione ricorsiva

Rieccomi a chiedere aiuto. vorrei chiedere:
1) se l'esercizio va bene
2) Come potrebbe essere il seguente programma "tradotto" in c++ ?



#include <stdio.h>
#include <stdlib.h>

int inverti (int *a, int n);

int main ()
{
int *a, n, i;

printf ("Quante elementi vuoi inserire?");
scanf ("%d", &n);
a= (int*)malloc(n*sizeof(int));

for (i=0; i<n; i++) {
printf ("Inserisci il valore n.%d\n", i+1);
scanf ("%d", &a); }

printf ("Gli elementi sono inseriti in questo ordine:\n");

for (i=0; i<n; i++) {
printf ("%d) %d\n", i+1, a); }

inverti (a, n);
printf ("Ora gli elementi sono inseriti in questo ordine:\n");

for (i=0; i<n; i++) {
printf ("%d) %d\n", i+1, a); }

system ("pause");
return 0;
}

int inverti (int *a, int n)
{
int temp, i;

for (i=0; i<(n/2); i++)
{
temp = a;
a = a[n-1 -i];
a[n-1 -i] = temp;
}

return 0;
}

8 Risposte

  • Re: C++ - scambio argomenti con funzione ricorsiva

    Usa i tag code per il codice
  • Re: C++ - scambio argomenti con funzione ricorsiva

    Il primo passo che mi viene in mente è questo, sono un po arrugginito con il C, mi dite se come sintassi ho messo troppi strafalcioni.

    p.s. compilato con borland C, potrebbe non essere rispettoso degli ultimi standard.
    [CODE] #include <stdio.h> #include <stdlib.h> class TMIA { private: int quanti; int *buffer; public: void init(int n); void inserisci(int pos,int n); int leggi(int n); void done(); void inverti (); void elenco (); }; int TMIA::leggi(int n) { return buffer[n]; } void TMIA::init(int n) { quanti=n; buffer=(int*)calloc(n, sizeof(int)); } void TMIA::done() { free(buffer); } void TMIA::inserisci(int pos,int n) { buffer[pos]=n; } void TMIA::inverti () { int n1,n2, c1; for (c1=0; c1<(quanti/2); c1++) { n1 = leggi(c1); n2 = leggi(quanti-c1-1); inserisci(c1,n2); inserisci(quanti-c1-1,n1); } } void TMIA::elenco () { int c1; for (c1=0; c1<quanti; c1++) { printf ("%d) %d\n", c1+1, leggi(c1)); } } int main () { int num, c1, quanti; TMIA mia; printf ("Quante elementi vuoi inserire?"); scanf ("%d", &quanti); mia.init(quanti); for (c1=0; c1<quanti; c1++) { printf ("Inserisci il valore n.%d ", c1+1); scanf ("%d", &num); mia.inserisci(c1,num); } printf ("Gli elementi sono inseriti in questo ordine:\n"); mia.elenco(); mia.inverti(); printf ("Ora gli elementi sono inseriti in questo ordine:\n"); mia.elenco(); system ("pause"); return 0; }
  • Re: C++ - scambio argomenti con funzione ricorsiva

    oregon ha scritto:


    Usa i tag code per il codice
    Ci provo, grazie mille!
  • Re: C++ - scambio argomenti con funzione ricorsiva

    Ma la funzione ricorsiva quale sarebbe?
  • Re: C++ - scambio argomenti con funzione ricorsiva

    oregon ha scritto:


    Ma la funzione ricorsiva quale sarebbe?
    La ricorsiva è una funzione che "chiama" se stessa.
  • Re: C++ - scambio argomenti con funzione ricorsiva

    Intendo nel tuo codice...
  • Re: C++ - scambio argomenti con funzione ricorsiva

    oregon ha scritto:


    Intendo nel tuo codice...
    Ah scusa, non avevo capito.

    inverti (a, n);
  • Re: C++ - scambio argomenti con funzione ricorsiva

    Ma la inverti non chiama se stessa... o non lo vedo io?
Devi accedere o registrarti per scrivere nel forum
8 risposte