Napisz program wyświetlający liczby z przedziału <a,b> w porządku rosnącym i malejącym. Wartości a i b podaje użytkownik

0

co mam źle?

#include<iostream>
using namespace std;
int main()
{
int liczba1;
int liczba2;
cout<<"podaj liczbe dolna przedzialu";
cin>>liczba1;
cout<<"podaj liczbe gorna przedzialu";
cin>>liczba2;
if(liczba1>liczba2)
swap(liczba1,liczba2);
for(liczba1;liczba1<=liczba2;liczba1++)

	cout<<liczba1<<" ";
for(liczba2;liczba1<=liczba2;liczba2--)

	cout<<liczba2<<" ";

}
10

Używasz zmiennych oznaczających granice przedziału do iterowania po nim. Użyj dodatkowej zmiennej, obyczajowo i.

0
#include<iostream>
using namespace std;
int main()
{
int liczba1;
int liczba2;
cout<<"podaj liczbe dolna przedzialu";
cin>>liczba1;
cout<<"podaj liczbe gorna przedzialu";
cin>>liczba2;
if(liczba1>liczba2)
swap(liczba1,liczba2);
for(int i=liczba1;i<=liczba2;i++)
{
	cout<<i<<" ";}
for(int i=liczba2;i>=liczba2;i--)
{
	cout<<i<<" ";}

}
0

Nieaktualne znalazłam błąd

1

jak już Nieaktualne ... to popatrz teraz z innej perspektywy
do tego zadania zbędna jest pętla "for" czy "swap"

#include <iostream>

using namespace std;

void grows(int, int);
void decrease(int, int);

int main()
{
    int x{0},y{0};
    cout<<"Enter x: ";cin>>x;cout<<"Enter y: ";cin>>y;
    if(x>y){(x=x+y);(y=x-y);(x=x-y);}
    decrease(y,x);
    cout<<'\n';
    grows(x,y);
    cout<<'\n';
    return 0;
}
void grows(int x, int y)
{
    if(x<=y){cout<<x<<' ';grows(++x,y);}
}
void decrease(int y, int x)
{
    if(y>=x){cout<<y<<' ';decrease(--y,x);}
}

3

Jak się bawimy w rekurencję to można jeszcze prościej:

#include <iostream>

using namespace std;

void grows_and_decrase(int, int);

int main()
{
    int x{0},y{0};
    cout<<"Enter x: ";cin>>x;cout<<"Enter y: ";cin>>y;
    if(x>y){(x=x+y);(y=x-y);(x=x-y);}

    grows_and_decrase(x,y);

    return 0;
}
void grows_and_decrase(int x, int y)
{
    if(x<=y)
    {
        cout<<x<<' ';
        grows_and_decrase(x+1,y);
        cout<<x<<' '; 
    }
    else 
    { 
        cout << '\n';
    }
}
3
// (Debian 10.2.1-6) Code::Blocks 20.03 -std=c++20
// g++ -Wall -fexceptions -g -std=c++20 -c main.cpp -o main.o

#include <iostream>
#include <ranges>

using namespace std;

int main()
{
    int x{0},y{0};
    cout<<"Enter x: ";cin>>x;cout<<"Enter y: ";cin>>y;
    if(x>y) x^=y,y^=x,x^=y;

    for(auto i: std::ranges::iota_view{x, y + 1}){cout<<i<<" ";}
    cout << '\n';
    for(auto i: std::ranges::iota_view{x, y + 1} | std::views::reverse){cout<<i<<" ";}

    return 0;
}

0
Robert Karpiński napisał(a):

Jak się bawimy w rekurencję to można jeszcze prościej:

Jak sie bawimy w rekurencje to wysypujemy program. Jeszcze zakladajac ze poczatek i koniec to by byly stale, to mozna by uznac za akceptowalne (choc kompletnie nie mam pojecia po co). Ale jesli wejscie wprowadza uzytkownik to taki kod jest po prostu niepoprawny.

1
eleventeen napisał(a):
Robert Karpiński napisał(a):

Jak się bawimy w rekurencję to można jeszcze prościej:

Jak sie bawimy w rekurencje to wysypujemy program. Jeszcze zakladajac ze poczatek i koniec to by byly stale, to mozna by uznac za akceptowalne (choc kompletnie nie mam pojecia po co). Ale jesli wejscie wprowadza uzytkownik to taki kod jest po prostu niepoprawny.

Bo to tylko zabawa a nie pisanie softu dla statku kosmicznego. Po prostu cieszmy się z nawet debilnych rozwiązań :) :)

1
reich napisał(a):
// (Debian 10.2.1-6) Code::Blocks 20.03 -std=c++20
// g++ -Wall -fexceptions -g -std=c++20 -c main.cpp -o main.o

#include <iostream>
#include <ranges>

using namespace std;

int main()
{
    int x{0},y{0};
    cout<<"Enter x: ";cin>>x;cout<<"Enter y: ";cin>>y;
    if(x>y) x^=y,y^=x,x^=y;

    for(auto i: std::ranges::iota_view{x, y + 1}){cout<<i<<" ";}
    cout << '\n';
    for(auto i: std::ranges::iota_view{x, y + 1} | std::views::reverse){cout<<i<<" ";}

    return 0;
}

Mała wariacja: https://godbolt.org/z/crddrcGb9

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