Accedi per seguire   
Seguaci 0
spiug

[c] Esercitazione 3

3 messaggi in questa discussione

Esercizio1:

Scrivere un programma che, dato un numero naturale n, produca su

una stessa riga i quadrati dei numeri naturali compresi tra 0 e 2n, e

sulla riga successiva i cubi dei numeri naturali compresi tra 2n e 4n.

Come l'ho risolto:

#include <stdio.h>
int d=0;
int quadrato(int a);
void riga_quadrati(int b);
int cubo(int a);
void riga_cubi(int b);

int main() {
int n;
int d=0;
printf ("Dammi il numero n\n");
scanf ("%d",&n);
riga_quadrati(n);
printf ("\n");
d=2*n;
riga_cubi(n);
scanf ("%d",&n);
}

int quadrato(int a) {
a=a*a;
return(a);
}

void riga_quadrati(int b) {
if (d!=(2*b))
riga_quadrati(d+1);
printf (" %d",quadrato(d));
return;
}

int cubo(int a) {
a=a*a*a;
return(a);
}

void riga_cubi(int b) {
if (d!=(4*b))
riga_quadrati(d+1);
printf (" %d",cubo(d));
return;
}

...però se pure ho aggiunto un scanf alla fine del main (cosa inutile) mi esce lo stesso senza farmi vedere i risultati... :)

Ci saranno altri errori?!

Comunque alla fine l'ho risolto in un altro modo:

#include <stdio.h>

int quadrato(int a);
int cubo(int a);

int main() {
int n;
int i=0;
printf ("Dammi il numero n\n");
scanf ("%d",&n);

for (i=0; i!=n; i++)
printf (" %d",quadrato(i));

printf ("\n");

for (i=2*n; i!=(4*n); i++)
printf (" %d",cubo(i));
}

int quadrato(int a) {
a=a*a;
return(a);
}

int cubo(int a) {
a=a*a*a;
return(a);
}

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Esercizio 2

Scrivere un programma che, dato un numero naturale n, produca su

una stessa riga i numeri pari compresi tra -6n e 6n e sulla riga

successiva i numeri dispari compresi tra -6n+1 e 6n-1.

Ecco come l'ho risolto:

#include <stdio.h>

int main () {

int n,i;

printf ("Dammi il numero n\n");
scanf ("%d",&n);
for (i=(-6*n); i<=(n*6); i++)
	if ((i%2)==0) 
	   printf (" %d",i);

printf ("\n");

for (i=((-6*n)+1); i!=((n*6)-1); i++)
	if ((i%2)==1) 
	   printf (" %d",i);	
}

..e funziona senza problemi :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Esercizio 3

Scrivere una funzione double potenza (double base, int esponente)

che calcoli la potenza di base elevato all'esponente. Si assuma che

base sia diverso da zero. (Si ricordi che a-b=(1/a)b).

Come l'ho risolto:

#include <stdio.h>

double potenza (double base, int esponente);
int abs(int i);

int main() {
double n;
int g;

printf ("Dammi il numero che vuoi elevare\n");
scanf (" %lf",&n);
printf ("Dimmi per quale grado\n");
scanf (" %d",&g);

printf ("\nBene, ora ti darò il risultato\n");
printf ("%4.2lf",potenza(n,g));
   scanf (" %d",&g);
}

double potenza (double base, int esponente) {
   int i;
   double a=base;
   if (base==0) {
	  printf ("Non posso elevare numeri di base 0!!");
	  return 0;
	  }
   else {
	  for (i=1;i<abs(esponente);i++)
		   a=a*base;
	  if (esponente>0)
		 return a;
	  else {
		 a=1/a;
		 return a;
		 };
   }
}

int abs(int i)
{
if (i < 0)
	return -i;
else
	return i;
}

Perfettamente funzionante ;-)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0