Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <map>
  4. using namespace std;
  5.  
  6. int najmniejsza(map<int, string> liczby, int length){//zwraca wiersz z najmniejsza liczba
  7. for(int i = 1; i < length; i++){ //zaczynamy od 1 wiersza bo wiemy, ze pierwsza cyfra to 1 i tak jest zawsze
  8. int count = 0;
  9. for (const auto& op : liczby){
  10. if(op.second[i] == '1'){
  11. count++;
  12. }
  13. }
  14. if(count != liczby.size()){
  15. for (const auto& op : liczby){
  16. if(op.second[i] == '1'){//jezeli jest rowne 1 to kasujemy z listy.
  17. liczby.erase(op.first);
  18. }
  19. }
  20. }
  21. }
  22. for (const auto& op : liczby){
  23. return op.first;
  24. }
  25. }
  26.  
  27. int najwieksza(map<int, string> liczby, int length){//zwraca wiersz z najwieksza liczba
  28. for(int i = 1; i < length; i++){ //zaczynamy od 1 wiersza bo wiemy, ze pierwsza cyfra to 1 i tak jest zawsze
  29. int count = 0;
  30. for (const auto& op : liczby){
  31. if(op.second[i] == '0'){
  32. count++;
  33. }
  34. }
  35. if(count != liczby.size()){
  36. for (const auto& op : liczby){
  37. if(op.second[i] == '0'){//jezeli jest rowne 0 to kasujemy z listy.
  38. liczby.erase(op.first);
  39. }
  40. }
  41. }
  42. }
  43. for (const auto& op : liczby){
  44. return op.first;
  45. }
  46. }
  47.  
  48. int main(int argc, char const *argv[])
  49. {
  50. const int n = 1000;
  51. fstream file("liczby.txt", ios::in);
  52. string liczba[n];
  53. int zad1 = 0;
  54. int zad2_2 = 0;
  55. int zad2_8 = 0;
  56. std::string line;
  57. int i1 = 0;
  58. if(file.good()){
  59.  
  60. int najkrotszy_ciag = 250;
  61. map<int, string> najkrotsze;//wiersz, liczba
  62.  
  63. int najdluzszy_ciag = 0;
  64. map<int, string> najdluzsze;//wiersz, liczba
  65.  
  66. int i = 1;
  67. while(getline(file, line)){
  68. int count = 0;
  69. for(int j = 0; j < line.size(); j++){
  70. if(line[j] == '0'){
  71. count++;
  72. }
  73. else{
  74. count--;
  75. }
  76. }
  77. if(count > 0){
  78. zad1++;
  79. }
  80. if(line[line.size()-1] == '0'){
  81. zad2_2++;
  82. }
  83. if(line[line.size()-1] == '0' && line[line.size()-2] == '0' && line[line.size()-3] == '0'){
  84. zad2_8++;
  85. }
  86. if(line.size() < najkrotszy_ciag){
  87. najkrotszy_ciag = line.size();
  88. najkrotsze.clear();
  89. najkrotsze[i] = line;
  90. }
  91. else if(line.size() == najkrotszy_ciag){
  92. najkrotsze[i] = line;
  93. }
  94. if(line.size() > najdluzszy_ciag){
  95. najdluzszy_ciag = line.size();
  96. najdluzsze.clear();
  97. najdluzsze[i] = line;
  98. }
  99. else if(line.size() == najdluzszy_ciag){
  100. najdluzsze[i] = line;
  101. }
  102. i++;
  103. }
  104. cout<<"wiecej zer niz jedynek - "<<zad1<<endl;
  105. cout<<"podz przez 2 - "<<zad2_2<<endl;
  106. cout<<"podz przez 8 - "<<zad2_8<<endl;
  107. cout<<"najkrotszy ciag liczb - "<<najkrotszy_ciag<<endl;
  108. cout<<"najmniejsza w wierszu - "<<najmniejsza(najkrotsze, najkrotszy_ciag)<<endl;
  109. cout<<"najwieksza w wierszu - "<<najwieksza(najdluzsze, najdluzszy_ciag)<<endl;
  110. }
  111. else{
  112. cout<<"Error";
  113. }
  114. return 0;
  115. }
  116. /*
  117. 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