Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
jonikmmm
Сообщений: n/a
#1

Прочитать программу, написать псевдо-код и объяснить его - C++

04.12.2011, 16:37. Просмотров 454. Ответов 0
Метки нет (Все метки)

Здравствуйте! Пожалуйста помогите разобраться с программой дубовиком.... мне нужно сдавать лабораторную, а я не знаю, что там и как.... плачу 200 рублей за успешно-сданную лабораторную))) Нужно либо псевдо код написать либо в комментариях что и как работает, а еще потом по телефону объяснить или по скайпу...буду очень благодарен! Прикрепляю код:

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
141
142
143
144
145
146
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QString>
 
#include <pthread.h>
#include <unistd.h>
#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <ctime>
#include <cstdlib>
#include <cerrno>
#include <cstring>
 
using namespace std;
namespace{
 
 
vector<string> names;
vector<pthread_t> thr1, thr2;
pthread_t main;
QString ostring;
 
struct Info{
int NThreads;
class Widget *that;
}myInfo;
 
 
class make_string{
private:
std::ostringstream buffer;
public:
template<typename T>
make_string& operator << (T const &datum){
buffer<<datum;
return *this;
}
operator std::string() const{
return buffer.str();
}
 
};
 
void postMessage(const string& message){
QString result = ostring+message.c_str();
ostring=result;
cout<<message.c_str();
}
 
void postError(pthread_t thread, int result){
if(result) postMessage(make_string()<<"Thread "<<thread<<" exit with an error: "<<strerror(result));
}
 
void *thread1(void *p)
{
string name = make_string()<<pthread_self();
int ip = *(reinterpret_cast<int*>(p));
names[ip] = name;
ofstream out(name.c_str());
int x = rand()%100+1;
for (int i = 0; i<x; i++) out << "s";
out.close();
time_t timer = time(0);
string message = make_string()<<"Hi, I am odd thread with ID = "<<static_cast<unsigned int>(pthread_self())<<", PID = "<< getpid()<<", PPID = "<<getppid()<<", TIME = "<< ctime(&timer)<<"FileName = "<<name<<", Number of written symbols = "<<x<<"\n\n";
postMessage(message);
return NULL;
}
 
void *thread2(void *p)
{
int ip = *(reinterpret_cast<int*>(p));
pthread_join(thr1[ip], NULL);
ifstream in(names[ip].c_str());
int a = 0;
char temp;
while(!in.eof())
{
in >> temp;
a++;
}
in.close();
time_t timer = time(0);
string message = make_string()<<"Hi, I am even thread with ID = "<<static_cast<unsigned int>(pthread_self())<<", PID = "<< getpid()<<", PPID = "<<getppid()<<", TIME = "<< ctime(&timer)<<"FileName = "<<names[ip]<<", Number of read symbols = "<<a<<"\n\n";
postMessage(message);
return NULL;
}
void * anotherMain(void *)
{
ostring="";
int NPairs = myInfo.NThreads;
thr1.resize(NPairs);
thr2.resize(NPairs);
names.resize(NPairs);
for (int i = 0; i<NPairs; i++)
{
if(pthread_create (&thr1[i], NULL, thread1, &i)<0)
{
postMessage(make_string()<<"Cannot create odd thread\n");
printf("Cannot create odd thread");
continue;
}
if(pthread_create (&thr2[i], NULL, thread2, &i)<0){
postMessage(make_string()<<"Cannot create even thread\n");
pthread_join(thr1[i], NULL);
}else{
pthread_join(thr2[i],NULL);
}
}
return NULL;
}
}
Widget::Widget(QWidget *parent)
: QWidget(parent), ui(new Ui::Widget)
{
ui->setupUi(this);
ui->input->setInputMask("9;");
}
 
Widget::~Widget()
{
delete ui;
}
 
void Widget::on_startButton_clicked(){
bool a;
int NThreads =ui->input->text().toInt(&a);
 
if(a){
myInfo.NThreads=NThreads;
myInfo.that=this;
pthread_create(&main, NULL, anotherMain,NULL);
pthread_join(main, NULL);
postMessage(ostring);
}
}
void Widget::postMessage(const QString& message){
QString output = ui->output->toPlainText()+message;
ui->output->setPlainText(output);
}
void Widget::on_clearButton_clicked(){
ui->output->clear();
}

Результаты работы программы

Hi, I am odd thread with ID = 3067411312, PID = 2418, PPID = 2385, TIME = Wed Mar 24 02:04:26 2010
FileName = 3067411312, Number of written symbols = 6

Hi, I am even thread with ID = 3059018608, PID = 2418, PPID = 2385, TIME = Wed Mar 24 02:04:26 2010
FileName = 3067411312, Number of read symbols = 7

Hi, I am odd thread with ID = 3059018608, PID = 2418, PPID = 2385, TIME = Wed Mar 24 02:04:26 2010
FileName = 3059018608, Number of written symbols = 52

Hi, I am even thread with ID = 3067411312, PID = 2418, PPID = 2385, TIME = Wed Mar 24 02:04:26 2010
FileName = 3059018608, Number of read symbols = 53
Можете либо позвонить на +79243118379, если сможете помочь, либо написать на jon_krivonogov@mail.ru...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2011, 16:37     Прочитать программу, написать псевдо-код и объяснить его
Посмотрите здесь:
C++ Написать код так, чтобы его мог легко прочитать пользователь, незнакомый с программированием
C++ Найти площадь равностороннего треугольника, зная его периметр (объяснить код)
Двумерный массив (Написать программу его поворота на 90 градусов относительно его центра) C++
C++ Подскажите пожалуйста как правильно это объяснить, прочитать
составить программу,которая создает файл, состоящий из 10 значений типа int. прочитать файл и вычислить сумму его элементов C++
Написать код который покажет значения массива а потом его перевернет C++
C++ Написать программу нахождения n-го члена последовательности и его номера
Объяснить код C++
C++ Объяснить код
Объяснить код на С++ C++
Объяснить код C++
Написать программу, которая обрабатывает результаты экзамена. Код C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru