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

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

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

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

04.12.2011, 16:37. Просмотров 456. Ответов 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++
Есть некоторая консольная игра, по указанию преподователя ее &quot;интерфейс&quot; - главная функция должна быть легко читаема пользователем...

Найти площадь равностороннего треугольника, зная его периметр (объяснить код) - C++
Задача: Известно значение периметра равностороннего треугольника. Вычислить его площадь. Вод код решения задачи. #include &lt;iostream&gt;...

Написать программу поиска файла на ПК по его расширению, и отправки его на e-mail - C++
Я ищу человека который мне поможет написать программу для поиска файла на ПК по его расширению, и отправка его на e-mail , лучше бы чтобы...

Двумерный массив (Написать программу его поворота на 90 градусов относительно его центра) - C++
Дан массив A(n,n). Написать программу его поворота на 90 градусов относительно его центра. На печать вывести исходный и повернутый массивы....

Подскажите пожалуйста как правильно это объяснить, прочитать - C++
#include&lt;stdio.h&gt; int main() { double y,x; printf(&quot;Vvedite zna4enie y=&quot;); scanf(&quot;%lf&quot;,&amp;y); if(y&gt;2) ...

составить программу,которая создает файл, состоящий из 10 значений типа int. прочитать файл и вычислить сумму его элементов - C++
составить программу,которая создает файл, состоящий из 10 значений типа int. прочитать файл и вычислить сумму его элементов

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2011, 16:37
Привет! Вот еще темы с ответами:

Написать код который покажет значения массива а потом его перевернет - C++
Не могу написать код в с++ который покажет и потом перевернет рандом не значения массива.Помогите плз) Добавлено через 4 минуты ...

Написать программу нахождения n-го члена последовательности и его номера - C++
Добрый вечер, т. к. в школе с математикой было не все так просто, а сейчас я столкнулся с проблемой решения (написания) программы для...

Написать программу, которая обрабатывает результаты экзамена. Код - C++
Написать программу, которая обрабатывает результаты экзамена. Для каждой оценки программа должна вычислить процент от общего количества...

Объяснить код - C++
Двоичный поиск #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;conio.h&quot; #include &quot;stdio.h&quot; using namespace std; int...


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

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

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