PDA

View Full Version : [C] Cos'ha che non va questo??


Manugal
04-09-2005, 20:25
Ciao a tutti!!!

Un esercizio del mio libro mi chiede di scrivere un programma che legga un valore intero n e sommi gli interi da n a 2*n se n>=0, e da 2*n a n altrimenti. Dice di farlo prima solo con cicli for e poi solo con cicli while. Io con i cicli for ho fatto così:

#include <stdio.h>
int main(void){

int n,i,sum_neg=0,sum_pos=0;
printf("Insert n: ");
scanf("%d", &n);

if(n>=0)
for(i=n; i>2*n; i++)
sum_pos+=i;
else
for(i=2*n; i>n; i--)
sum_neg+=i;

printf("Sum pos = %d\n", sum_pos);
printf("Sum neg = %d\n", sum_neg);
return 0;
}



L'output è che qualsiasi numero metta mi da sempre zero. Non riesco a capire perché.... :confused:

Raistlin86
04-09-2005, 20:41
Ciao, inanzitutto nel 1° ciclo for hai masso condizione i>2*n, ma i partendo da n non è mai maggiore e quindi esce subito, se metti un numero negativo invece dovrebbe funzionare

Raistlin86
04-09-2005, 20:43
aggiungo che anke il secondo ciclo ha lo stesos problema perchè i numeri negativi sarebbero da considerare al contrario :D

VegetaSSJ5
04-09-2005, 21:44
#include <stdio.h>

int main(void) {
int n, i, somma=0;
printf("Insert n: ");
scanf("%d", &n);
if (n>=0)
for(i=n; i<=2*n; i++)
somma+=i;
else
for(i=2*n; i<=n; i++)
somma+=i;
printf("Somma = %d\n", somma);
return 0;
}

Manugal
14-09-2005, 16:11
Grazie... scusate se rispondo adesso ma ho avuto il modem rotto per una settimana. IN effetti quei cicli non andavano me n'ero accorto poi.

sirus
14-09-2005, 16:56
c'è un bello strumenti che si chiama debugger e che aiuta a capire cosa non va in un programma :O seguendone il flusso in esecuzione :p