Newsgroup: it.comp.lang.c
Titolo: correzione

Perchč non funziona? Grazie dell'aiuto,  Carlo
/*Definire una funzione che abbia come parametro un numero intero
positivo e che visualizzi la sequenza dei primi 5 numeri
successivi al numero dato.*/
#include<stdio.h>
int sequenza(int);
main()
{
int risposta;
risposta=sequenza( 9 );
printf("%d ", risposta);
return 0;
}
  int sequenza(int numero)
  {
  while(numero<=14)
  {
   numero++;
  }
  return numero;
  }


void sequenza(int numero)
{
    int end = numero + 5;
    while (numero < end) {
           numero++;
           printf("\numero %d\n", numero); 
    }
}

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
AlterX wrote:
| Karl wrote:
CUT
| void sequenza(int numero)
| {
|    int end = numero + 5;
|    while (numero < end) {
|           numero++;
|           printf("\numero %d\n", numero);    }
| }
Cosě non si compila... se dichiari sequenza come void non puoi scrivere risulatato=sequenza(9)
Io farei cosě:
#include<stdio.h>
void sequenza(int);
int main()
{
~        int risposta;
	int numero = 0;
	printf("\nInserisci il numero: ");
	scanf("%d",&numero);
~        sequenza(numero);
~        return 0;
}
void sequenza(int numero)
{
~        int i;
~        for(i=0;i<5;i++){
~        numero++;
~        printf("\nNumero %d\n", numero);
~        }
}
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
iD8DBQFCOJcyryrMZEyu98wRAiQkAJoCcOeG5clbnDWoDW3dFJav6uk++gCcCa8f
Vl3eWe+JbbkyGJMV3yM0vTw=
=duAb
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Tommaso Leonardi wrote:
| Io farei cosě:
|
| #include<stdio.h>
| void sequenza(int);
|
| int main()
| {
| ~        int risposta;
|     int numero = 0;
|     printf("\nInserisci il numero: ");
|     scanf("%d",&numero);
| ~        sequenza(numero);
| ~        return 0;
|
| }
|
|
| void sequenza(int numero)
| {
| ~        int i;
| ~        for(i=0;i<5;i++){
| ~        numero++;
| ~        printf("\nNumero %d\n", numero);
| ~        }
| }
Chiedo scusa per le tildi... non capisco come ci siano finite...
Tommaso
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
iD8DBQFCOJeOryrMZEyu98wRAsmgAKCTI4PQrr1S9oUsd6GDX4BbZ+1odQCffc+S
02Och4pTn8CVA2kVXFkyGHA=
=JBYe
-----END PGP SIGNATURE-----

 -----END PGP SIGNATURE-----
Beh è ovvio che deve cambiare la main!

 
#include<stdio.h>
int num ( int n )
  {
	return n=n+1;
  }
void main()
  {
	unsigned int n;
	unsigned risultato;
	int end = 5; //Per avere il numero finale
	printf("Inserisci il numero\n");
	scanf("%d",&n); //Acquisisco il numero
	for ( int i = n; i <= ( end + n ); i++ )
          {
		risultato = num ( n );
		printf("\nIl numero successivo e' %d\n",risultato);
	 }
  }

Ho provato a rifarti un po' l'esercizio, non lo ho provato ma credo sia 
giusto ad una prima occhiata

> successivi al numero dato.*/
Quella che proponi NON e' una risposta al quesito sopra.
Anzi, contiene un errore molto grave.
Una possibile soluzione e' questa:
void seq(unsigned int n)
{ unsigned int i;
   for (i=1; i<6; i++) printf("%u ",i+n);
   printf("\n");
}
oppure questa
void seq(unsigned int n)
{
   printf("%u %u %u %u %u\n",n+1,n+2,n+3,n+4,n+5);
}
Tu non hai definito nessuna funzione che soddisfa il testo
dell'esercizio.
Hai definito una funzione completamente errata int num():
 > int num ( int n )
 >  {
 >     return n=n+1;
 >  }
Qui tu evidentemente pensi che se uno scrive
int n = 6;
num(n);
printf("%d\n",n);
il frammento di codice stampera' 7.
Mi dispiace ma questo vuol dire che hai una idea completamente
sbagliata del passaggio dei parametri.
Inoltre mescoli allegramente numeri signed e unsigned e
definisci void il main.
ciao,
v.

 giusto ad una prima occhiata
no. hai cannato completamente. vedi la mia risposta.
v.

 v.
Mi scuso hai ragione, comunque ora ho dato una sistemata al codice.
Volevo farlo con la ricorsivita' che non e' un brutto metodo.
Comunque ora la funzione potrebbe anche essere cosi':
int num ( unsigned int n ) //Qui come diceviu giustamente lo passo 
senza 			   //segno
  {
     static int j = 0;
     j++;
     return n=n+j;
  }

 Comunque ora la funzione potrebbe anche essere cosi':
E continua a non essere una "funzione che prende un parametro
intero positivo e stampa i 5 numeri successivi" come era richiesto.
Non te la prendere, ma se qualcuno alle primissime armi chiede un
aiuto, secondo me bisognerebbe dargli un aiuto sensato e semplice.
E' inutile complicarsi la vita con funzioni che ricordano valori
e che sono comunque un gran brutto metodo di risolvere il problema dato.
Senza cattiveria, e' solo la mia modestissima opinione.
ciao,
g.

 g.
Si tranquillo, anch'io alla fine sono alle prime armi e ti ringrazio 
d'avermi fatto notare gli errori.
Ciao ci si rilegge!