Liczba dodatnia zamiast ujemnej

0

Witam, mam pewien problem związany z tym że gdy wpisuje liczbe ujemną następnie liczbe tą potrzebuje do wyliczenia sumy ciagu to niestety zamienia mi sie ona na dodatnią. Konwertowalem z int na float - nie dziala. Nie mam juz kompletnie pomyslu co z tym zrobić... może ktoś jakis pomysl? Dzięki z góry za pomoc

# include <stdio.h>
# include <math.h>

int main ()
{
	int i,N,E;
	printf ("Podaj pierwsza liczbe:  "); scanf ("%d", &i);
	printf ("Podaj ilosc liczb jaka ma byc wczytana wlacznie z pierwsza:  "); scanf("%d", &N); printf("\n"); 
	E=N+i;
	for (i; i< E; ++i)
	{
	printf ("Liczba: %d \n", i);}
	printf ("\n");
	

        float a = N;
	float d = i;	
	float B;	
	int B= (2*i + (N-1)*N)/2;
	printf ("Suma wszystkich wczytanych liczb to ", B);
	
	printf("aby zakonczyc cos"); scanf ("%d");
	return 0;
}
 
0

Nie dostrzegam w tym:

Skipp3r napisał(a):

... gdy wpisuje liczbe ujemną następnie liczbe tą potrzebuje do wyliczenia sumy ciagu to niestety zamienia mi sie ona na dodatnią ...
żadnego sensu. Jak również w podanym kodzie.
Może powiedz co próbujesz zrobić?

0

wpisuje -5 w miejscu "Podaj pierwszą liczbe" i tam gdzie jest int B= (2i + (N-1)N)/2; zamiast policzyc 2(-5) to liczy 25 tak jakby tego minusa tam w ogole nie bylo.

Próbuje napisać program wyliczajacy sume ciągu z ilości podanych przez użytkownika liczb począwszy od wpisanej liczby "i"

0

hmm

    float B;    
    int B= (2*i + (N-1)*N)/2;

przecież to sie nawet nie skompiluje...

1

Przecież zmieniasz wczytaną 'i' w trakcie działania programu: for (i; i< E; ++i)

0

Chyba rozumiem, czyli dlatego w równaniu które później wykonuje uwzględnia "i" jako 5 a nie (-5) bo to jest kolejna liczba w ciągu... w takim razie jak to skodować by "i" było tą liczbą którą wpisałem na samym początku?

0

nie jako 5 tylo jako E

0

Kod po poprawie wygląda tak

# include <stdio.h>
# include <math.h>

int main ()
{
	int i,N,E,B;
	printf ("Podaj pierwsza liczbe:  "); scanf ("%d", &i);
	printf ("Podaj ilosc liczb jaka ma byc wczytana wlacznie z pierwsza:  "); scanf("%d", &N); printf("\n"); 
	E=N+i;
	for (i; i< E; ++i)
	{
	printf ("Liczba: %d \n", i);}
	printf ("\n");
    
    B= ((2*i + (N-1))*N)/2;
	printf ("Suma wszystkich wczytanych liczb to \n", B);
	
	printf("aby zakonczyc cos"); scanf ("%d");
	return 0;
}
"Podaj pierwszą liczbe" -5
"Podaj ilosc liczb jaka ma byc wczytana wlacznie z pierwsza: " 10

wypisuje tak jak chcę 10 liczb od (-5) do 4. I teraz chcę by do równania B wziął tą pierwszą liczbe z listy oraz liczbe N. Póki co nie pokazuje mi żadnego wyniku... Domyslam sie ze gdzies bede musial przekonwertowac int na float

równanie B biore z wzoru na sume ciągu

dodanie znacznika <code> - @furious programming

0

Po pętli for (i; i< E; ++i) i=E

0

Okej! Pasuje;> Oprócz błędów w zapisie kodu (zmęczenie robi swoje) miałem dodatkowo walnięty wzór na sume "n" początkowych wyrazów ciągu...

 
# include <stdio.h>
# include <math.h>

int main ()
{
	float i,N,E,B,An,C;
	printf ("Podaj pierwsza liczbe:  "); scanf ("%f", &i);
	printf ("Podaj ilosc liczb jaka ma byc wczytana wlacznie z pierwsza:  "); scanf("%f", &N); printf("\n"); 
	
	An= i+(N-1);
	C = 2;
    B= (i + An)/C ;
	
	E=N+i;
	for (i; i< E; ++i)
	{
	printf ("Liczba: %f \n", i);}
	printf ("\n");
	
	printf ("Suma wszystkich wczytanych liczb to %f\n", B);
	
	printf("aby zakonczyc cos"); scanf ("%d");
	
	return 0;
}

Dzięki _13th_Dragon za odpowiedzi;>

1 użytkowników online, w tym zalogowanych: 0, gości: 1