C++wybieranie najmniejszej oraz największej liczby spośród podanych

0

Witam, mam problem z programym , który wybiera największą i najmniejszą liczbę z podanych (bez użycia min i max) i czy mógłby mi ktos pomóc napisac go?

niestety w programowaniu jestem zielony bo dopiero co zaczynam

#include <bits/stdc++.h>

using namespace std;

int main()
{
    float a,b,c,d,e;

    cout << "Podaj wartości pieciu liczb " << endl;
    cin>> a>>b>>c>>d>>e;
	if (a > b&&a < c&&a < d&&a < e)
	{
		cout<< "największa liczba to:"<<a; 
	}
	if (b > a&&b > c&&b > d&&b < e)
	{
		cout<< "największa liczba to:"<<b; 
	}
	if (c > a&&c > b&&c > d&&c < e)
	{
		cout<< "największa liczba to:"<<c; 
	}
	if (d > a&&d > b&&d > c&&d < e)	
	{
		cout<< "największa liczba to:"<<d; 
	}
	if (e > a&&e > b&&e > c&&e < d)
	{
		cout<< "największa liczba to:"<<e; 
	}
    return 666;
}
1

Poczytaj sobie o tablicach, a następnie spróbuj zaimplementować ten schemat
title
W ramach małego ćwiczenia spróbuj go tutaj opisać na krokach, a my ci powiemy czy dobrze go zrozumiałeś :)

2
cin>> a,b,c,d,e;

To nie zadziała, musisz zrobić coś takieg:

cin>> a; cin>>b; cin>>c; cin>>d; cin>>e;

Albo napisz tak, też nie ma min, max

int main()
{
    std::array<float, 5> arr;
    std::cin >> arr[0];std::cin >> arr[1];std::cin >> arr[2];std::cin >> arr[3];std::cin >> arr[4];
    std::sort(arr.begin(), arr.end());
    std::cout<< "najmniejsza: " << *arr.begin() << "\n";
    std::cout<< "najwieksza: " << *std::prev(arr.end()) << "\n";
    
    return 0;
}
0

a nie mozna go jakoś napisać prosto bo no chciałbym to zrozumieć a dopiero co zaczynam

3
several napisał(a):
cin>> a,b,c,d,e;

To nie zadziała, musisz zrobić coś takieg:

cin>> a; cin>>b; cin>>c; cin>>d; cin>>e;

Takich rad to Ty nie udzielaj.

cin >> a >> b >> c >> d >> e;

0
plx211 napisał(a):

Poczytaj sobie o tablicach, a następnie spróbuj zaimplementować ten schemat
title
W ramach małego ćwiczenia spróbuj go tutaj opisać na krokach, a my ci powiemy czy dobrze go zrozumiałeś :)

z tablic byłem dobry ale nie wiem totalnie jak używać "if-ów"

1

Składnia if jest naprawdę prosta

if (warunek) {
  // Tutaj kod który się wykona gdy warunek będzie spełniony
} else if (warunek2) {
  // Tutaj kod który się wykona gdy waruenk2 będzie spełniony
} else {
  // Tutaj kod który się wykona gdy powyższe warunki nie będą spełnione
}

Przykłady:

if (a > b) {
  std::cout << "a jest większe od b";
}

Czytamy jako:
Jeśli wartość zmiennej a jest większe od wartości zmiennej b to wydrukuj na ekranie napis a jest większe od b

if (tab[3] == 0) {
  std::cout << "xxx";
} else {
  std::cout << "yyy";
}

Czytamy jako:
Jeśli 3 element tablicy tab jest równy 0 to wydrukuj na ekranie napis xxx,
w przeciwnym wypadku wydrukuj na ekranie napis yyy

if (a > 0) {
  std::cout << "a jest dodatnie";
} else if (a < 0) {
  std::cout << "a jest ujemne";
} else {
  std::cout << "a równa się zero";
}

Czytamy jako:
Jeśli wartość zmiennej a jest większe od 0 to wydrukuj na ekranie napis a jest dodatnie,
w przeciwnym wypadku jeśli a jest mniejsze od 0 to wydrukuj na ekranie napis a jest ujemne,
w przeciwnym wypadku wydrukuj na ekranie a równa się zero

Spróbuj wpierw opisać powyższy diagram przy pomocy kroków, a następnie krok po kroku spróbujemy go razem napisać w c++ tak abyś to zrozumiał.

0

wiem że można użyć tablic ale wole napisać to tym dłuższym sposobem bo wiem że się da
i co to jest te "std:"?

#include <bits/stdc++.h>

using namespace std;

int main()
{
    float a,b,c,d,e;

    cout << "Podaj wartości pieciu liczb " << endl;
    cin>> a>>b>>c>>d>>e;
	if ((a > b)&&(a < c)&&(a < d&&a < e))
	
		cout<< "największa liczba to:"<<a; 
	
	else if ((b > a)&&(b > c)&&(b > d)&&(b < e))
	
		cout<< "największa liczba to:"<<b; 
	
	else if ((c > a)&&(c > b)&&(c > d)&&(c < e))
	
		cout<< "największa liczba to:"<<c; 
	
	else if ((d > a)&&(d > b)&&(d > c)&&(d < e))	
	
		cout<< "największa liczba to:"<<d; 
	
	else if ((e > a)&&(e > b)&&(e > c)&&(e < d))
	
		cout<< "największa liczba to:"<<e; 

return 0;
}
0
plx211 napisał(a):

Składnia if jest naprawdę prosta

if (warunek) {
  // Tutaj kod który się wykona gdy warunek będzie spełniony
} else if (warunek2) {
  // Tutaj kod który się wykona gdy waruenk2 będzie spełniony
} else {
  // Tutaj kod który się wykona gdy powyższe warunki nie będą spełnione
}

Przykłady:

if (a > b) {
  std::cout << "a jest większe od b";
}

Czytamy jako:
Jeśli wartość zmiennej a jest większe od wartości zmiennej b to wydrukuj na ekranie napis a jest większe od b

if (tab[3] == 0) {
  std::cout << "xxx";
} else {
  std::cout << "yyy";
}

Czytamy jako:
Jeśli 3 element tablicy tab jest równy 0 to wydrukuj na ekranie napis xxx,
w przeciwnym wypadku wydrukuj na ekranie napis yyy

if (a > 0) {
  std::cout << "a jest dodatnie";
} else if (a < 0) {
  std::cout << "a jest ujemne";
} else {
  std::cout << "a równa się zero";
}

Czytamy jako:
Jeśli wartość zmiennej a jest większe od 0 to wydrukuj na ekranie napis a jest dodatnie,
w przeciwnym wypadku jeśli a jest mniejsze od 0 to wydrukuj na ekranie napis a jest ujemne,
w przeciwnym wypadku wydrukuj na ekranie a równa się zero

Spróbuj wpierw opisać powyższy diagram przy pomocy kroków, a następnie krok po kroku spróbujemy go razem napisać w c++ tak abyś to zrozumiał.

Mógłbyś mi po prostu napisać ten program i będę do niego dochodził krok po kroku

2

co to jest te "std:"?

std to przestrzeń nazw standardowej biblioteki c++, jeśli uznamy że nazwy zmiennych, funkcji, ... to nazwy ulic, to w takim wypadku przestrzeń nazw będzie nazwą miasta.

wiem że można użyć tablic ale wole napisać to tym dłuższym sposobem bo wiem że się da

Oczywiście da się, pytanie tylko co zrobisz jak nagle będziesz musiał znaleźć największą liczbę wśród 1 000 000 liczb?
Dlatego piszę się kod w taki sposób aby był (w granicach rozsądku) jak najbardziej re-używalny.

Mógłbyś mi po prostu napisać ten program i będę do niego dochodził krok po kroku

Nie ma sprawy, takie lekcje ofiaruje za 10000zł, jeśli ty będziesz pisał od początku kod to będzie za darmo.

4

Skoro tyle ludzi się tak rozpisało to może troszkę namącę.

#include<iostream>
#include<iterator>
#include<algorithm>

int main()
{
    auto [min, max] = std::minmax_element(std::istream_iterator<int>{std::cin}, {});
    if (min != std::istream_iterator<int>{}) {
        std::cout << *min << ' ' << *max << '\n';
    } else {
        return 1;
    }
    return 0;
}
0

Czasami ify można zastąpić gotową funkcją z biblioteki standardowej, oczywiście w ramach zdrowego rozsądku:

#include <bits/stdc++.h>

using namespace std;

int main()
{
    float a,b,c,d,e;

    cout << "Podaj wartości pieciu liczb: ";
    cin>> a>>b>>c>>d>>e;

    cout << "max = " << max(a,max(b,max(c,max(d,e)))) << endl;

    return 0;
}
0

Ja tam podrzucę ci moją funkcję, która wyszukuje MAX, żeby wyszukiwała MIN, to kopiujesz funkcję i zmieniasz w warunku if znak > na <

inline unsigned int max(std::vector<int> tMax)
{
    unsigned int max=0;

    for(unsigned int i=0; i<tMax.size(); ++i){
        max = static_cast<unsigned int>(tMax.at(i));

        for(unsigned int j=0; j<i; ++j){
            if(static_cast<unsigned int>(tMax.at(j))>max){
                max = static_cast<unsigned int>(tMax.at(j));
            }
        }
    }
    return max;
}

inline unsigned int min(std::vector<int> tMin)
{
    unsigned int min=0;

    for(unsigned int i=0; i<tMin.size(); ++i){
        min = static_cast<unsigned int>(tMin.at(i));

        for(unsigned int j=0; j<i; ++j){
            if(static_cast<unsigned int>(tMin.at(j))<min){
                min = static_cast<unsigned int>(tMin.at(j));
            }
        }
    }
    return min;
}

int main(void)
{
    std::vector<int> v={1,2,3,5};

    std::cout<<max(v);
}

i wywołasz tą funkcję dla tylu liczb ile chcesz, wystarczy, że odpalisz tą funkcję w pętli. Sory za to rzutowanie ale kompilator mi tu uwagi zwracał...

0

Ja tego wątku naprawdę nie rozumiem. Przecież ten kod do działania potrzebuje tylko zmiany operatorów < na >

#include <bits/stdc++.h>

using namespace std;

int main()
{
    float a,b,c,d,e;

    cout << "Podaj wartości pieciu liczb " << endl;
    // cin>> a>>b>>c>>d>>e;
    // dla testów
    // a=1; b=2; c=3; d=4; e=5;
    a=5; b=4; c=3; d=2; e=1;
    
    if ((a > b)&&(a > c)&&(a > d)&&(a > e))
        cout<< "największa liczba to:"<<a; 

    else if ((b > a)&&(b > c)&&(b > d)&&(b > e))
        cout<< "największa liczba to:"<<b; 

    else if ((c > a)&&(c > b)&&(c > d)&&(c > e))
        cout<< "największa liczba to:"<<c; 

    else if ((d > a)&&(d > b)&&(d > c)&&(d > e))    
        cout<< "największa liczba to:"<<d; 

    else if ((e > a)&&(e > b)&&(e > c)&&(e > d))
        cout<< "największa liczba to:"<<e; 
    
    else     
        cout<< "Nie ma największej liczby?"; 

    return 0;
}

W dodatku jakby zamienić > na >= było by już super. Oczywiście review u mnie w pracy by nie przeszło, ale super jak na kod początkujacego.

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