Pętle w C++ na podstawowym poziomie

0

Witam, jestem na I roku studiów i dopiero zaczynam swoją przygodę z C++ i mam problem z następującymi zadaniami, w zasadzie udało mi się zrobić tylko to co jest napisane pogrubioną czcionką, bardzo proszę o pomoc przynajmniej w części zadań.
2. Napisz program, który wczytuje z klawiatury dwie liczby całkowite, a następnie:
Wypisuje wszystkie liczby z ich przedziału
• Dodaje wszystkie parzyste liczby z przedziału i wypisuje wynik na ekranie
3. Napisz program, który wczytuje 5 liczb z klawiatury oraz:
• Wypisuje na ekran największą i najmniejszą liczbę oraz ich różnicę
4. Napisz program, który wczytuje N liczb z klawiatury oraz:
• Wypisuje na ekran średnią liczb oraz x-razy liczbę 0, gdzie x = średnia wprowadzonych liczb.

tyle udało mi się zrobić w 2 zadaniu

1

Z czym konkretnie masz problem? Na czym się zacinasz? Np. w „[d]odaje wszystkie parzyste liczby z przedziału i wypisuje wynik na ekranie” — nie wiesz, jak dodać; nie wiesz, jak parzyste; czy nie wiesz, jak wypisać? I analogicznie dla reszty.

1

To są tak podstawowe rzeczy, że wystarczy jak wpiszesz w Google treść zadań po angielsku i dodasz C++, to wyskoczą ci przykładowe kody...

2

w drugim zadaniu wypisałam liczby z przedziału i nie wiem jak dodać i jak parzyste, w trzecim nie wiem jak wypisać największa i najmniejszą liczbę , a za czwarte w ogóle nie wiem jak się zabrać

W drugim potrzebujesz sobie utworzyć zmienną, która będzie trzymać wynik dodawania. Zwiększanie wartości sumy o wartość jest w C(++) zapisywane jako suma += wartość. Wartości parzyste to, z definicji, te, które przy dzieleniu przez dwa dają resztę zero, czyli wartość % 2 == 0.

W trzecim potrzebujesz jedną zmienną przechowującą aktualne minimum, i drugą przechowującą aktualne maksimum. Ustawiasz je początkowo na pierwszą wartość (bo gdyby nie było innych, to właśnie ta pierwsza byłaby jednocześnie największa i najmniejsza), i potem przelatujesz w pętli przez tablicę, patrząc na każdą kolejną liczbę. Jeśli jest większa od maksimum, zmieniasz maksimum na nią; jeśli jest mniejsza od minimum, zmieniasz minimum na nią.

W czwartym zadaniu żeby policzyć średnią, potrzebujesz znać sumę wszystkich liczb (podejście jak w zadaniu drugim — zmienna pomocnicza na sumę i dodajesz), po czym ją podzielić przez N.¹ Po tym, jak już będziesz znać tę sumę, odpalasz kolejną pętlę, od jedynki do tej średniej, która co iterację wypisuje jedno 0. Co zrobić w sytuacji, kiedy średnia nie jest liczbą naturalną — tzn. jak wypisać, przykładowo, -8 zer, albo 3,5 zer, zadanie nie precyzuje… 🙄


¹ Problem z sytuacją, w której suma liczb przekracza zakres zmiennej, pozostawiamy do rozwiązania czytelnikowi; jako wykraczający poza zakres materiału. ;)

0
  1. Napisz program, który wczytuje z klawiatury dwie liczby całkowite, a następnie:
    • Wypisuje wszystkie liczby z ich przedziału
    • Dodaje wszystkie parzyste liczby z przedziału i wypisuje wynik na ekranie

tyle udało mi się zrobić w 2 zadaniu

dopełnię

// (Debian 10.2.1-6) Code::Blocks 20.03 -std=c++14 or higher
// g++ -Wall -fexceptions -g -std=c++14 -c main.cpp -o main.o

#include <iostream>

using namespace std;

int main()
{
    int x{0},y{},r{0},f{0},t{0},s{0};
    cout<<"Enter begin: "; cin>>x;
    cout<<"Enter end: ";cin>>y;
    if((((y+((~x)+1))>>31)&1)){f=x;t=y-1;s=-1;}else{f=x;t=y+1;s=1;}
    for(int i=f;i!=t;i+=s){
        cout << i << " ";if(!(i&1))r+=i;
    }
    cout<<"\nsum even num = "<<r<< '\n';

    return 0;
}
3

Dla sumy liczb parzystych z zakresu nie jest potrzebna pętla:

#include <cmath>
#include <iostream>
using namespace std;

int main()
{
	unsigned from,to;
	cin>>from>>to;
	if(from>to) swap(from,to);
	from+=(from&1);
	to-=(to&1);
    cout<<"Sum: "<<((from+to)*(((to-from)>>1)+1)>>1)<<endl<<endl;
	return 0;
}

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