Projekt w języku c++, w programie dev c++.
1. Wylosować tablicę 40stu liczb naturalnych z przedziału [1,100]. Wyświetlić.
2. Posortować ją względem ilości dwójek w rozkładzie na czynniki pierwsze: czyli najpierw
ustawić liczby nieparzyste, następnie te parzyste, które nie dzielą się przez 4, potem te
podzielne przez 4, które nie dzielą się przez 8, itd.
3. Wyświetlić ponownie.
Przykład:
Tablica: 2 4 3 5 10 6 9
Wyświetla: 3 5 9 2 10 6 4
2, 10, 6- jedna dwójka w rozkładzie
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2025 KUDO.TIPS - All rights reserved.
/* http://pastebin.com/AV8uUiR3
* File: main.cpp
* Author: ksm
*
* Created on 9 kwiecień 2012, 00:53
*/
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
const size_t ROZMIAR = 40;
int random_number() { return rand() % 100 + 1; }
// zwraca prawdę jeśli lewy ma mniej dwójek w rozkłdzie
// niż prawy.
bool compare_by_two(int l, int r) {
if (l == 0 && r == 0) {
// warunek dla zer.
return false;
}
while (((l & 1) == 0) && ((r & 1) == 0)) {
// sprawdzaj czy obie nieparzyste, jeśli tak to podziel je przez dwa.
l >>= 1;
r >>= 1;
}
if (((l & 1) == 1) && ((r & 1) == 0)) {
// lewa jest bardziej nieparzysta od prawej.
return true;
} else {
// lewa nie jest bardziej nieparzysta od prawej.
return false;
}
}
/*
*
*/
int main(int argc, char** argv) {
// inicjuje generator liczb losowych aktualnym czasem.
// NIGDY NIE STOSUJ TEGO DO KRYPTOGRAFI
std::srand(std::time(NULL));
// stwórz tablicę (na stosie)
int tab[ROZMIAR];
// wypełnij ją liczbami losowymi
// http://www.cplusplus.com/reference/algorithm/generate/
std::generate(&tab[0], &tab[ROZMIAR], random_number);
// wypisz tablicę po wylosowaniu
// http://www.cplusplus.com/reference/std/iterator/ostream_iterator/
std::ostream_iterator< int > output( cout, " " );
std::copy(&tab[0], &tab[ROZMIAR], output);
cout << endl;
// posortuj tablicę jak w linijce 22 z poniższego przykładu
// http://www.cplusplus.com/reference/algorithm/sort/
std::sort(&tab[0], &tab[ROZMIAR], compare_by_two);
// ponownie wypisz używają iteratora strumienia wyjściowego z pierwszego wypisywania tablicy
std::copy(&tab[0], &tab[ROZMIAR], output);
return 0;
}