Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75

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

25.05.2011, 17:03. Показов 1565. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru