Аватар для Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75

Программа в VS работает, в Linux не работает

25.05.2011, 17:03. Показов 1572. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание следующее, из текстового файла вывести самые редкие числа, самые частые, кол-во разных, вывести числа из интервала и удалить нечетные. Выполнить в std::map

код:

stl.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <fstream>
#include <map>
using namespace std;
 
 
 class myStl{
 private:
     map <int, int> mystl;
     map <int,int>::iterator first;
     map <int,int>::iterator last;
     int size;
public:
     void read(ifstream &in);
     void count(int num);
     void max();
     void min();
     void kolvo();
     void interval(int f, int l);
     void del();
 };
stl.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include "stl.h"
 
void myStl::read(ifstream &in){
    int num;
    if(!in){
        cerr<<"Error while opening file =(";
        //exit(1);
    }
in>>num;
cout<<num<<" ";
mystl.insert(pair<int,int>(num,1));
    while(!in.eof()){
        read(in);
    }
    size=mystl.size();
    count(num);
}
 
void myStl::count(int num){
first=mystl.begin();
last=mystl.end();
while(first!=last) 
 {
  if(first->first==num)
   {
   ++first->second;
    }
    ++first;
}   
}
void myStl::max(){
    first=mystl.begin();
    last=mystl.end();
    int max=first->second;
    int num;
     while((++first)!=last){
        if(first->second>=max)
        {
            max=first->second;
            }
            ++first;
}
    first=mystl.begin();
    cout<<"Samoe chastoe chislo: ";
    while(first!=last){
    if(first->second==max){
        num=first->first;
    cout<<num<<" ";
    }
    ++first;
    }
    cout<<endl;
}
 
void myStl::min(){
    first=mystl.begin();
    last=mystl.end();
    int min=first->first;
    int num;
     while((++first)!=last){
        if(first->second<=min)
        {
            min=first->second;
        }
        ++first;
}
    first=mystl.begin();
    cout<<"Samoe redkoe chislo: ";
    while(first!=last){
    if(first->second==min){
        num=first->first;
    cout<<num<<" ";
    }
    ++first;
    }
    cout<<endl;
}
 
void myStl::kolvo(){
    cout<<"Kolichestvo raznuh chisel:"<<mystl.size()<<endl;
}
 
void myStl::interval(int f, int l){
    first=mystl.begin();
    last=mystl.end();
    cout<<"Chisla iz intervala "<<f<<"-"<<l<<": ";
    while(first!=last){
        if(first->first>f && first->first<l){
         cout<<first->first<<" ";
        }
        ++first;
    }
    cout<<endl;
}
 
void myStl::del(){
    first=mystl.begin();
    last=mystl.end();
    while(first!=mystl.end())
     {
         if((first->first)%2!=0)
         {
             mystl.erase(first);
             first=mystl.begin();
         }
         ++first;
     }
first=mystl.begin();
cout<<"Posle ydalenia nechetnuh: ";
  while(first!=last)
  {
      for(int i=1;i<first->second;i++){
      cout<<first->first<<" "; 
      }
      ++first;
  }
};
main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stl.h"
 
int main(){
    ifstream in;
    in.open("fin.txt");
    myStl mystl;
    cout<<"Fail coderjit chisla: ";
    mystl.read(in);
    cout<<endl;
    in.close();
    mystl.max();
    mystl.min();
    mystl.kolvo();
    mystl.interval(5, 10);
    mystl.del();
    //int o;
    //cin>>o;
return 0;
};
В VC запускаю, все работает и дает правильный результат. В linux запускаю через терминал, выводит только числа из файла а за ними абракадабру из рандомных чисел и все.
Сдать соответственно ее мне нужно в Linux
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.05.2011, 17:03
Ответы с готовыми решениями:

Не работает Gtkmm 3.10 + Glade + GtkSourceView на Linux 64bit
Начал разбираться с GTKmm и натолкнулся на проблему. Создаю GUI в Glade, Есть форма, на ней приличное кол-во объектов и, собственно...

Программа работает при запуске в CodeLite, но не работает при запуске в консоли
Здравствуйте, подскажите пожалуйста в чем проблема??? При компилировании и запуске программы в приложении CodeLite, программа прекрасно...

Программа под Ubuntu Linux не работает с файлами
Добрый день. Написал программу на C++ и с использованием Qt для интерфейса. Под Windows 7 всё нормально. Перенес проект в Ubuntu 11.10....

2
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
26.05.2011, 07:11
Зачем классы было делать - непонятно.
main.cc:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include <iostream>
#include <fstream>
#include <map>
#include <iterator>
#include <vector>
#include <algorithm>
#include <functional>
#include <cstdlib>
 
typedef std::pair<int, size_t> num_pair;
typedef std::map<int, size_t>::const_iterator const_map_iter;
typedef std::vector<int>::const_iterator const_vector_iter;
 
struct cmp
{
    bool operator () (const num_pair&,
              const num_pair&) const;
};
 
class in_range
{
public:
    typedef num_pair argument_type;
    
    in_range(int, int);
    bool operator () (const num_pair&) const;
private:
    int l_b, u_b;
};
 
struct odd
{
    bool operator () (const num_pair&) const;
};
 
void dump(const_map_iter, const_map_iter);
        
int main(int argc, char* argv[])
{
 
    if(argc != 2)
    {
    std::cerr << "Usage: " << *argv << " FILE" << std::endl;
    return 1;
    }
 
    std::ifstream in(argv[1]);
    
    if(!in)
    {
    std::cerr << "Can't open file " << argv[1] << " for input" << std::endl;
    return 1;
    }
 
    std::vector<int> numbers;
    
    std::map<int, size_t> occ;
 
    std::copy(std::istream_iterator<int>(in),
          std::istream_iterator<int>(),
          std::inserter(numbers, numbers.begin()));
    
    for(const_vector_iter it = numbers.begin(); it != numbers.end(); ++it)
    ++occ[*it];
 
    const_map_iter it;
 
    std::cout << "Table of occurence:" << std::endl;
    dump(occ.begin(), occ.end());
        
    if((it = std::max_element(occ.begin(), occ.end(), cmp())) != occ.end())
    std::cout << "The most often occured number is: " << it->first << std::endl;
    else
    std::cout << "No most often occured number" << std::endl;
 
    if((it = std::min_element(occ.begin(), occ.end(), cmp())) != occ.end())
    std::cout << "The most seldom occured number is: " << it->first << std::endl;
    else
    std::cout << "No most seldom occured number" << std::endl;
 
    std::cout << "Count of different numbers is: " << occ.size() << std::endl;
 
    std::cout << std::endl;
 
    std::map<int, size_t> ranged;
 
    const int l_b = -5;
    const int u_b =  5;
    
    std::remove_copy_if(occ.begin(), occ.end(),
            std::inserter(ranged, ranged.begin()),
            std::not1(in_range(l_b, u_b)));
 
    std::cout << "Table of occurence for numbers in range ["
          << l_b << ", " << u_b << "]:" << std::endl;
    
    dump(ranged.begin(), ranged.end());
 
    std::map<int, size_t> evens;
 
    std::remove_copy_if(occ.begin(), occ.end(),
            std::inserter(evens, evens.begin()),
            odd());
    
        std::cout << "Table of occurence with odd numbers erased:" << std::endl;
    dump(evens.begin(), evens.end());
    
    return 0;
}
 
bool cmp::operator () (const num_pair& p1,
               const num_pair& p2) const
{
    return p1.second < p2.second;
}
 
in_range::in_range(int l, int u)
    : l_b(l), u_b(u)
{
}
 
bool in_range::operator () (const num_pair& p) const
{
    return p.first >= l_b && p.first <= u_b;
}    
 
bool odd::operator () (const num_pair& p) const
{
    return p.first & 1;
}
 
void dump(const_map_iter begin, const_map_iter end)
{
    std::cout << "Number\tCount of occurences" << std::endl;
 
    for(const_map_iter it = begin; it != end; ++it)
    std::cout << it->first << "\t" << it->second << std::endl;
 
    std::cout << std::endl;
}
input.txt
Code
1
1 2 3 1 2 34 -2 3 2 15 1 3 8 4 5 28 28 0 0 -7 15 -4 4 5 -4 3 8 2 1 -2 2 -7 8 15
Компиляция:
Code
1
2
3
4
5
6
7
8
-*- mode: compilation; default-directory: "/home/nameless/samples/cpp/" -*-
Compilation started at Thu May 26 13:54:22
 
make
g++ -c -Wall -g -ansi -pedantic-errors main.cc
g++ -o sample  main.o
 
Compilation finished at Thu May 26 13:54:23
Запуск:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[nameless@desktop cpp]$ ./sample input.txt
Table of occurence:
Number  Count of occurences
-7  2
-4  2
-2  2
0   2
1   4
2   5
3   4
4   2
5   2
8   3
15  3
28  2
34  1
 
The most often occured number is: 2
The most seldom occured number is: 34
Count of different numbers is: 13
 
Table of occurence for numbers in range [-5, 5]:
Number  Count of occurences
-4  2
-2  2
0   2
1   4
2   5
3   4
4   2
5   2
 
Table of occurence with odd numbers erased:
Number  Count of occurences
-4  2
-2  2
0   2
2   5
4   2
8   3
28  2
34  1
 
[nameless@desktop cpp]$
1
 Аватар для Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
26.05.2011, 19:02  [ТС]
Nameless One, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2011, 19:02
Помогаю со студенческими работами здесь

Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает
почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает. Имею в ввиду что сделал прогу которая меняет...

Программа работает на Delphi 2007 или более ранней но не работает на старших версиях (10.1 например)
В программе используются дополнительные файлы и dll написанные на fortran их кода нет ;( в ранних вернсиях все хорошо, в старшей 10.1 или...

После AVZ не работает программа Credo Межевой план автоматически закрывается и не работает цифровая подпись
После AVZ не работает программа Credo Межевой план автоматически закрывается и не работает цифровая подпись. Помогите пожалуйста!

Программа работает в консоли xp, но не работает в dosbox в 7ке
Добрый день, проблему описал в заголовке, код: .286 DSEG SEGMENT STR_ALRLOADED db 'is unloaded ', 13, 10, '$' ...

Программа работает в отладке, но не работает в скомпилированном виде
Доброго времени суток. Появилась не предвиденная проблема :( Не получается разобраться, поскольку в отладчике все летает без ошибок. А...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru