Oppure

Loading
08/11/11 13:31
simovik90
Ciao Ragazzi... sono nuovo del forum e mi sono appena immatricolato alla facoltà di ingegneria informatica. comunque, vorrei sapere, trovandomi davanti a questi codici qua quali operazioni svolge il compilatore per arrivare ad un determinato output:

#include <stdio.h>

int f(int a,int b)
{
	int r=1;
	while (b>0)
	{
		r*=a;
		b--;
	}
	return r;
}

int main()
{
	printf ("%i\n",f(2,10));
	printf ("%i\n",f(f(2,10),0));
	printf ("%i\n",f(-1,f(2,10)));
	printf ("%i\n",f(-1,f(2,10)+1));
	printf ("%i\n",f(f(2,10),-1));
}



#include <stdio.h>

int g(int a,int b)
{
	int s=0;
	while (a>0)
	{
		s+=a%b;
		a/=b;
	}
	return s;
}

int f(int a,int b)
{
	int r=1;
	while (b>0)
	{
		r*=a;
		b--;
	}
	return r;
}

int main()
{
	printf ("%i\n",g(10241231,10));
	printf ("%i\n",g(30,5));
	printf ("%i\n",g(30,3));
	printf ("%i\n",g(12,2));
	printf ("%i\n",g(3*f(12,3)+2*f(12,2),12));
}


#include <stdio.h>

int f(int a,int b)
{
	int s=0;
	while (a>0)
	{
		s+=a%b;
		a/=b;
	}
	return s;
}

int g(int a,int b)
{
	while (a>=b)
		a=f(a,b);
	return a;
}

int p(int a, int b)
{
	int r=1;
	while (b>0)
	{
		r*=a;
		b--;
	}
	
	return r;
}

int main()
{
	printf ("%i\n",g(1024,10));
	printf ("%i\n",g(1024,2));
	printf ("%i\n",g(2*p(3,2)+p(3,10),3));
	printf ("%i\n",g(1023,2));
}



sono semplici codici che ho trovato nella rete, tutti funzionanti (provati da me stesso)...
Ultima modifica effettuata da simovik90 08/11/11 13:42
aaa
08/11/11 13:51
nessuno
Li hai provati e cosa non hai capito?

Cosa sai tu di programmazione C?

Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
08/11/11 14:40
pierotofy
Il compilatore prende il sorgente e lo trasforma in un formato che il tuo computer e' in grado di interpretare. Per vedere cosa fa puoi prendere un disassemblatore (IDA?) e aprire il risultante eseguibile. Oppure usa un semplice editor esadecimale.
Il mio blog: piero.dev
08/11/11 17:31
Nullable
Vi prego di correggermi nel caso in cui stessi sbagliando : prima di avviare la fase di compilazione viene lanciato il linker che si occupa si "linkare" ovvero di *assemblare* o *unire* le direttive alle funzioni presenti negli header, nel caso in cui una funzione non si trova da nessuna parte allora viene emesso un error dal linker e ti viene anche specificato il tipo di errore con l'eventuale risoluzione. Se la fase di linking è avvenuta correttamente allora questo *pacchetto di funzioni assemblato" viene convertito in una sequenza binaria leggibile dal computer e successivamente eseguita ( da questo scaturisce l'output ).
aaa