Wpis z mikrobloga

Ktoś mi powie dlaczego takie coś w c++ jest niemożliwe:

vor(int i=najwieksza; i=0; i--){std::cout <<suma;}

?
Robię sobie zbiór zadań z c++ i poradziłem sobie z tym tak:

do{

std::cout <<suma;

najwieksza--;

}while(najwieksza);


nie mniej chciałbym wiedzieć, czy jest jakaś taka pętla, w której można podstawić nieznaną przed wykonaniem programu ilość przebiegów.
#programowanie
  • 15
  • Odpowiedz
@youmimicanski: Ale wyjaśnij może dokładniej co chcesz osiągnąć? Pętla for działa z nieznana liczba przebiegów. Można też napisać pętlę idącą w dół.

Btw: operator porównania to ==.
Btw2: pętla wykonuje się tak długo jak długi warunek jest spełniony
  • Odpowiedz
@Saly: @Alkreni no mam zadanko w książce i za cholerę mi tego nie kompiluje. Całość zadania brzmi tak jak na obrazku, a cały kod zrobiłem tak:

#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
system("chcp 1250");
int liczba1, liczba2, liczba3;
std::cout <<"Podaj 3 nieujemne liczby całkowite";
std::cout << '\n';
std::cout <<"Liczba 1: ";
youmimicanski - @Saly: @Alkreni no mam zadanko w książce i za cholerę mi tego nie kom...

źródło: a

Pobierz
  • Odpowiedz
@youmimicanski:

#include <iostream>
using namespace std;
int main()
{
unsigned int liczby[3],najwieksza=0,suma=0;
cout<<"Podaj trzy nieujemne liczby calkowite:\n";
cin>>liczby[0]>>liczby[1]>>liczby[2];
for(int i=0;i<3;++i)
{
if(liczby[i]>najwieksza)
{
najwieksza=liczby[i];
}
suma+=liczby[i];
}
suma-=najwieksza;
for(int i=0;i<najwieksza;++i)
{
cout<<suma<<endl;
}

return 0;
}
  • Odpowiedz
@youmimicanski:

#include <iostream>
#include<vector>
#include<algorithm>
#include <numeric>

int main()
{
std::vector<unsigned int> liczby(3) ;
for(auto idx=0;idx<3;++idx)
{
unsigned int temp;
std::cin>>temp;
liczby.push_back(temp);
}

auto najwieksza = std::max_element(liczby.begin(), liczby.end());
auto suma_pozostalych = std::accumulate(liczby.begin(), liczby.end(), 0u, [&najwieksza](unsigned int a, unsigned int b) {
return b != *najwieksza ? a + b : a;
});

std::cout<<suma_pozostalych;
return 0;
}

Nie uwzględnia przypadk gdzie masz więcej niż jedną największą liczbe. A i std::cout<<sumapozostalych;
  • Odpowiedz