Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <map>
- using namespace std;
- int najmniejsza(map<int, string> liczby, int length){//zwraca wiersz z najmniejsza liczba
- for(int i = 1; i < length; i++){ //zaczynamy od 1 wiersza bo wiemy, ze pierwsza cyfra to 1 i tak jest zawsze
- int count = 0;
- for (const auto& op : liczby){
- if(op.second[i] == '1'){
- count++;
- }
- }
- if(count != liczby.size()){
- for (const auto& op : liczby){
- if(op.second[i] == '1'){//jezeli jest rowne 1 to kasujemy z listy.
- liczby.erase(op.first);
- }
- }
- }
- }
- for (const auto& op : liczby){
- return op.first;
- }
- }
- int najwieksza(map<int, string> liczby, int length){//zwraca wiersz z najwieksza liczba
- for(int i = 1; i < length; i++){ //zaczynamy od 1 wiersza bo wiemy, ze pierwsza cyfra to 1 i tak jest zawsze
- int count = 0;
- for (const auto& op : liczby){
- if(op.second[i] == '0'){
- count++;
- }
- }
- if(count != liczby.size()){
- for (const auto& op : liczby){
- if(op.second[i] == '0'){//jezeli jest rowne 0 to kasujemy z listy.
- liczby.erase(op.first);
- }
- }
- }
- }
- for (const auto& op : liczby){
- return op.first;
- }
- }
- int main(int argc, char const *argv[])
- {
- const int n = 1000;
- fstream file("liczby.txt", ios::in);
- string liczba[n];
- int zad1 = 0;
- int zad2_2 = 0;
- int zad2_8 = 0;
- std::string line;
- int i1 = 0;
- if(file.good()){
- int najkrotszy_ciag = 250;
- map<int, string> najkrotsze;//wiersz, liczba
- int najdluzszy_ciag = 0;
- map<int, string> najdluzsze;//wiersz, liczba
- int i = 1;
- while(getline(file, line)){
- int count = 0;
- for(int j = 0; j < line.size(); j++){
- if(line[j] == '0'){
- count++;
- }
- else{
- count--;
- }
- }
- if(count > 0){
- zad1++;
- }
- if(line[line.size()-1] == '0'){
- zad2_2++;
- }
- if(line[line.size()-1] == '0' && line[line.size()-2] == '0' && line[line.size()-3] == '0'){
- zad2_8++;
- }
- if(line.size() < najkrotszy_ciag){
- najkrotszy_ciag = line.size();
- najkrotsze.clear();
- najkrotsze[i] = line;
- }
- else if(line.size() == najkrotszy_ciag){
- najkrotsze[i] = line;
- }
- if(line.size() > najdluzszy_ciag){
- najdluzszy_ciag = line.size();
- najdluzsze.clear();
- najdluzsze[i] = line;
- }
- else if(line.size() == najdluzszy_ciag){
- najdluzsze[i] = line;
- }
- i++;
- }
- cout<<"wiecej zer niz jedynek - "<<zad1<<endl;
- cout<<"podz przez 2 - "<<zad2_2<<endl;
- cout<<"podz przez 8 - "<<zad2_8<<endl;
- cout<<"najkrotszy ciag liczb - "<<najkrotszy_ciag<<endl;
- cout<<"najmniejsza w wierszu - "<<najmniejsza(najkrotsze, najkrotszy_ciag)<<endl;
- cout<<"najwieksza w wierszu - "<<najwieksza(najdluzsze, najdluzszy_ciag)<<endl;
- }
- else{
- cout<<"Error";
- }
- return 0;
- }
- /*
- z jakiegos powodu zle liczy najwieksza liczbe. Na przykladach, ktore robie zawsze dobrze pokazuje, a gdy bierzemy plik testowy, to już niespecjalnie.*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement