• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Język c - suma kolejnych liczb całkowitych z zakresu od N1 do N2

Object Storage Arubacloud
0 głosów
5,992 wizyt
pytanie zadane 27 października 2017 w C i C++ przez mn130496 Gaduła (3,530 p.)

Witam

Jestem studentem pierwszego roku informatyki i rozpocząłem naukę programowania w języku C.

Ostatnio na laboratoriach otrzymałem zadanie o treści:  Policz sume kolejnych liczb calkowitych z zakresu od N1 do N2 (N1<N2).
Przykładowo dla liczb 1 i 3 suma wynosi 1+2+3=6.Nie za bardzo wiem jak zrobić tom sumę czyli 

jak zrobić żeby jak np. podam liczbę n1=5 oraz liczbę b=7 to żeby program obliczył mi sumę 5+6+7.Czy ktoś mógłby mi to wytłumaczyć.Dodam jeszczę że program muszę napisać w języku c  a nie c++.Pozdrawiam

2 odpowiedzi

+2 głosów
odpowiedź 27 października 2017 przez Maniti Obywatel (1,220 p.)
wybrane 27 października 2017 przez mn130496
 
Najlepsza

możesz to zrobić np tak 

1. pobierasz n1, n2 

2. deklarujesz zmienną z sumą i zerujesz ją 

3. tworzysz pętlę np. for która będzie zaczynać się od n1 a kończyć na n2 

for(int i = n1; i<= n2; i++)

4. w pętli do sumy dodajesz zmienną i (deklarowaną w pętli) 

5. wypisujesz wynik (zmienną suma) 

komentarz 27 października 2017 przez mn130496 Gaduła (3,530 p.)

ok dziękuje zrobiłem to zadanie ale mi nie działa.Gdy wpisuje 1 i 3 to wyświetla mi 13.Możesz zobaczyć co mam źle?.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int n1;
    int n2;
    int i;
    int suma;
    suma=0;
    printf("Podaj liczbę calkowita n1: ");
    scanf("%d", &n1);
    printf("Podaj liczbe calkowita n2: ");
    scanf("%d", &n2);
    for (i=n1;i<n2;i++)
    {
        suma=suma+i;
        printf("%d",suma);
    }

    return (0);
}

 

komentarz 27 października 2017 przez Maniti Obywatel (1,220 p.)
1. w pętli warunek mniejsze równe bo ostatnią liczbę też ma zsumować np,

n1 = 1, n2 = 3 to wykona się dla 1 i 2 a ma dla 1, 2, 3 z tą (<=)

i możesz deklarować interator pętli w pętli  

czyli for(int i = n1; i <= n2; i++)

2.  wypisujesz wartość sumy w pętli a powinieneś po pętli
+1 głos
odpowiedź 16 stycznia 2018 przez J0ker Pasjonat (15,400 p.)
Rozwiązanie zaproponowane przed Pana Maniti jest dobre, ale można to zrobić lepiej.

Wykorzystaj wzór 1+2+3...+n=n(n+1)/2 (możesz go udowodnić indukcyjnie, jeśli nie wierzysz mi, że to prawda)

Zatem suma n1+n1+1+n1+2...+n2= n2(n2+1)/2 -((n1-1)*n1)/2

(Od sumy liczb 1+...+n2 odejmujesz sumę liczb 1+...+n1-1 i w ten sposób otrzymujesz sumę n1+...+n2.

Wykonujesz tutaj tylko 7 działań - 2 dodawania, 2 mnożenia, 2 dzielenia i 1 odejmowanie. Natomiast naiwne

dodawanie tych liczb rośnie liniowo i dla n2-n1>7 mój sposób będzie lepszy i będzie coraz lepszy wraz ze wzrostem

tej różnicy.

Pozdrawiam

Podobne pytania

0 głosów
2 odpowiedzi 4,582 wizyt
pytanie zadane 20 października 2018 w C i C++ przez Drax Użytkownik (630 p.)
0 głosów
1 odpowiedź 2,280 wizyt
0 głosów
1 odpowiedź 305 wizyt

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...