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

Zadanie c++. Napisz program wyznaczający sumę n początkowych liczb parzystych

Object Storage Arubacloud
0 głosów
9,383 wizyt
pytanie zadane 7 listopada 2016 w C i C++ przez Jedyn Obywatel (1,200 p.)

Witam. Nie mogę zrozumieć tego zadania (logicznie). Treść brzmi: Napisz program wyznaczający sumę n początkowych liczb parzystych. Liczbę n należy pobrać od użytkownika. Nie mogę zrozumieć dla czego suma po wpisaniu 4 wynosi 12 a nie 6. Wpisując 4, liczby parzyste to 2 oraz 4 (chociaż 4 nie jest chyba brana pod uwagę skoro i<k a nie i<=k). Kolejną rzeczą dla czego w pętli jest " suma+=i*2 "a nie warunek if(i%2==0)
{
suma+=i;
}

Kod autora:
 

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
  float  n,suma,i;
  
  
  cout << "Program oblicza sumę początkowych liczb parzystych.\n";
  cout << "(C)2003 student\n\n\n";  
  
  cout << "Podaj liczbę liczb n=";
  cin  >> n;
  
  suma=0;
  for (i=0;i<n;i++)
    suma+=2*i;
  
  cout << "\n\nSuma " << n << " początkowych liczb parzystych wynosi " << suma << endl << endl;

  system("PAUSE");	
  return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 7 listopada 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
wybrane 7 listopada 2016 przez Jedyn
 
Najlepsza

Kompletnie inaczej wyznacza się liczby parzyste

for (i=0;i<n;i++)
{
      if (i % 2 == 0)
      {
              std::cout<<"liczba jest parzysta, zrób z nią co chcesz"<<"\n";
      }
}
    

 

% <--- jest to tzw. operator "modulo". Wyznacza on resztę z dzielenia. Przykładowo liczba 16:2=8 reszty 0. Liczba 16 jest więc parzysta.

 

komentarz 7 listopada 2016 przez Jedyn Obywatel (1,200 p.)
Właśnie w ten sam sposób o tym myślałem i dla tego się zastanawiam. Czyli to może być wina przedawnienia metody?
komentarz 7 listopada 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
Nie może, tylko na pewno jest. Popraw swój program, jeżeli czegoś nie rozumiesz pisz śmiało na priv, lub tutaj.
komentarz 7 listopada 2016 przez Jedyn Obywatel (1,200 p.)
Tak ja to rozumiem ale nie mogę zrozumieć dla czego tak jest w odpowiedzi do tego zadania, chociaż są to zadania Włodzimierza Gajdy który uczył już jakiś czas temu i chciałem się upewnić ,że dobrze myślę.
komentarz 7 listopada 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
edycja 7 listopada 2016 przez Konrad Nabożny
Sposób który przedstawiłeś działa trochę inaczej. On wyznacza sumę n-tych liczb  i jak najbardziej działa poprawnie, ale robi coś innego.

suma += i*2;

suma = suma + 0*2;

suma = suma + 1*2;

suma = suma + 2*2;

suma = suma + 3*2;

suma = suma + 4*2;

suma = 3 + 4 + 6 + 8;

suma = 21;
komentarz 7 listopada 2016 przez manjaro Nałogowiec (37,390 p.)

Kompletnie inaczej wyznacza się liczby parzyste

Kompletnie kolega bzdury pisze. Rozwiązanie autorskie jest o wiele szybsze.

komentarz 7 listopada 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
Nie są to bzdury, ponieważ sposób który napisałem również jest używany do wyznaczania liczb parzystych.

Albo o tej godzinie już nie myślę, albo Ty się mylisz. W jaki sposób tamten program może wyliczać sumę liczb parzystych jeżeli nawet nie ma fragmentu który by te liczby parzyste "wybierał" z ciągu 1,2,3,4,5...
komentarz 7 listopada 2016 przez Jedyn Obywatel (1,200 p.)
Kondrad Nabożny Wprowadziłem Cię w swój tok myślenia tzn ,że w liczbie 4 liczbami parzystymi są 0,2,4 czyli wychodzi 6. A ten program miał na celu wypisać 4 liczby parzyste tak jak napisał manjaro. Tzn 4 liczby parzyste = 0,2,4,6 czyli 12 ;)
1
komentarz 7 listopada 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
Racja, przepraszam dyskutowaliśmy w trzy osoby jednocześnie wszyscy mając rację w swoim toku myślenia, ale nie mogąc dojść do porozumienia. Ten program działa prawidłowo. Przepraszam @manjaro, coś mi się wcześniej pokręciło :)
3
komentarz 7 listopada 2016 przez manjaro Nałogowiec (37,390 p.)
Spoko, czasem tak bywa.

Ale zrozumcie też jeszcze jedną ważną kwestię. Że używanie modulo w pętli oraz dodatkowego ifa znacznie wydłuża działanie programu. Aczkolwiek to jest też prawidłowe wyznaczanie liczb parzystych. Jednak szybciej jest albo mnożyć przez 2 każdą liczbę i mamy parzyste. Albo jeszcze inny sposób inkrementować pętlę nie jak zawsze i++ tylko co 2 czyli i+2.
0 głosów
odpowiedź 7 listopada 2016 przez manjaro Nałogowiec (37,390 p.)
A co tu jest niezrozumiałe?

Suma n początkowych liczb parzystych

Dla przykładu bierzemy 4 czyli cztery początkowe liczby parzyste (0,2,4,6) . Ich suma wynosi 12, czyli program liczy dobrze.

W pętli musi być i<n gdyż liczby parzyste zaczynamy liczyć od 0.
komentarz 7 listopada 2016 przez Jedyn Obywatel (1,200 p.)
Ja to trochę inaczej zrozumiałem, myślałem że 4 to nie jest ilość liczb parzystych czyli 0,2,4,6 tylko jest liczbą z której bierzemy liczby parzyste czyli 0,2,4. Ale dzięki za objaśnienie ;)

Podobne pytania

0 głosów
1 odpowiedź 1,912 wizyt
0 głosów
2 odpowiedzi 808 wizyt
pytanie zadane 20 marca 2019 w C i C++ przez abcd Początkujący (290 p.)
0 głosów
1 odpowiedź 926 wizyt
pytanie zadane 20 marca 2019 w C i C++ przez abcd Początkujący (290 p.)

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!

...