Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2015, 17:25   #1
ПлохойПрограммист
Новичок
Джуниор
 
Регистрация: 03.02.2015
Сообщений: 3
По умолчанию Работа с потоками, создание программы (С++)

Задание прикрепил. Собственно, с программированием не знаком, а из за войны сложно ухватиться за какой-то материал.. А сдавать работу нужно, не представляю как.

Собственно, можете что-то подсказать по этому поводу, как легче выполнить, что лучше почитать? Лично я даже не могу определить, большой ли объем работы там, или нет)
И, может где-то видел уже выполненные работы по данным лабам? Ибо задания все взяты из сети, и этим заданиям явно уже много лет)
http://rghost.ru/7whs86wgf - на форум файл не грузиться, сильно большой.

Последний раз редактировалось ПлохойПрограммист; 03.02.2015 в 17:28.
ПлохойПрограммист вне форума Ответить с цитированием
Старый 03.02.2015, 18:08   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Там много вариантов. Вам какой конкретно вариант нужно сдавать?
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 03.02.2015, 18:23   #3
ПлохойПрограммист
Новичок
Джуниор
 
Регистрация: 03.02.2015
Сообщений: 3
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
Там много вариантов. Вам какой конкретно вариант нужно сдавать?
По сути- любой, не уточнялось. Ну а по логике (списку)-5й.
ПлохойПрограммист вне форума Ответить с цитированием
Старый 03.02.2015, 18:45   #4
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

лабораторная 1
Код:
// лабораторная 1, 5 вариант, найти сумму нечетных элементов массива

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <malloc.h>

// поток
DWORD WINAPI a1(LPVOID l)
{
int i, n, *y, sum;

y = (int*) l; // массив
sum = 0; // сумма
n = y[0]; // количество элементов в массиве

printf("\nThread is started\n");
for(i=0;i<n;i++)
{
if (i%2 != 0)
sum +=y[i];
}

printf("%d\n", sum); // вывод суммы

return 0;
}

// точка входа
void main()
{
int n, i, *a;
HANDLE h;
DWORD d1;

n = 18; // размер массива
a = (int*)malloc(n*sizeof(int)); // динамич. выделение памяти под массив
srand(time(0)); 
a[0] = n; // чтобы поток знал количество элементов в массиве
for(i=1;i<n;i++) a[i]=rand()%9; // заполнение массива случ. числами
for(i=0;i<n;i++) printf("%d ", a[i]); // вывод массива

h = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) &a1, (void*) a, 0, &d1); // создание потока
WaitForSingleObject(h, INFINITE);
CloseHandle(h);
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 04.02.2015, 05:20   #5
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Лабораторная работа 2

_r2.cpp

Код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
#include <malloc.h>
#include <conio.h>

struct emp
{
int num;
char name[10];
double grade;
};

// точка входа
void main()
{
FILE* f;
char noname[12];
struct emp* f1;
int nnum;
char name[10];
float ngrade;
char str[128];
STARTUPINFO si;
PROCESS_INFORMATION pi;
char nm[] ="_r3.exe";

ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);

f1 = (struct emp*) malloc(sizeof(struct emp));

scanf("%s", noname);

f = fopen(noname, "ab");
f1->num = 1; strcpy(f1->name, "name1\0"); f1->grade = 0.5; fwrite(f1, sizeof(struct emp), 1, f);
f1->num = 2; strcpy(f1->name, "name2\0"); f1->grade = 0.6; fwrite(f1, sizeof(struct emp), 1, f);
f1->num = 3; strcpy(f1->name, "name3\0"); f1->grade = 0.7; fwrite(f1, sizeof(struct emp), 1, f);
f1->num = 4; strcpy(f1->name, "name4\0"); f1->grade = 0.8; fwrite(f1, sizeof(struct emp), 1, f);
f1->num = 5; strcpy(f1->name, "name5\0"); f1->grade = 0.9; fwrite(f1, sizeof(struct emp), 1, f);
fclose(f);

f = fopen(noname, "rb");
while (fread(f1, sizeof(struct emp), 1, f)) printf("%d %s %f\n", f1->num, f1->name, f1->grade);
fclose(f);

scanf("%d", &nnum);
scanf("%s", &name); 
scanf("%f", &ngrade);

sprintf(str, "%s %s %d %s %f\0", nm, noname, nnum, name, ngrade);
printf("%s\n", str);

if(!CreateProcess(0, str, 0, 0, 0, CREATE_NEW_CONSOLE, 0, 0, &si, &pi))
printf("!\n");
getch();
TerminateProcess(pi.hProcess, 1);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);

}
_r3.cpp

Код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
#include <malloc.h>
#include <conio.h>


struct emp
{
int num;
char name[10];
double grade;
};

// точка входа
void main(int argc, char* argv[])
{
FILE* f;
struct emp* f1;
struct emp* f3;
struct emp f2[10];
int i, j;

printf("%d\n", argc);
printf("%s", argv[0]);
printf("\n");

if (argc == 5)
{
printf("%s\n", argv[1]);
printf("%s\n", argv[2]);
printf("%s\n", argv[3]);
printf("%s\n", argv[4]);
}
else
{
exit(0);
}
getch();

f1 = (struct emp*) malloc(sizeof(struct emp));
f3 = (struct emp*) malloc(sizeof(struct emp));

f3->num = atoi(argv[2]); strcpy(f3->name, argv[3]); f3->grade = atof(argv[4]); 
printf("parameters: %d %s %f\n", f3->num, f3->name, f3->grade);

printf("read:\n");

i = 0;
f = fopen(argv[1], "rb");
while (fread(&f2[i], sizeof(struct emp), 1, f)) 
{
printf("%d %s %f\n", f2[i].num, f2[i].name, f2[i].grade);
i++;
}
fclose(f);


printf("i: %d\n", i);

printf("write:\n");

f = fopen(argv[1], "wb");
for(j=0; j < i; j++)
{
if (f2[j].num == f3->num)
{
f1->num = f3->num; 
strcpy(f1->name, f3->name); 
f1->grade = f3->grade; 
}
else
{
f1->num = f2[j].num; 
strcpy(f1->name, f2[j].name); 
f1->grade = f2[j].grade; 
}
printf("%d %s %f\n", f1->num, f1->name, f1->grade);
fwrite(f1, sizeof(struct emp), 1, f);
}
fclose(f);


printf("read:\n");

f = fopen(argv[1], "rb");
while (fread(f1, sizeof(struct emp), 1, f)) 
printf("%d %s %f\n", f1->num, f1->name, f1->grade);
fclose(f);

getch();
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 04.02.2015, 19:34   #6
ПлохойПрограммист
Новичок
Джуниор
 
Регистрация: 03.02.2015
Сообщений: 3
По умолчанию

Ух ты, спасибо большое тебе!
Надеюсь, поможет, и поможет не только мне!
ПлохойПрограммист вне форума Ответить с цитированием
Старый 04.02.2015, 23:11   #7
jeys
Пользователь
 
Аватар для jeys
 
Регистрация: 02.02.2015
Сообщений: 24
По умолчанию

класс подсказка
jeys вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с классами создание программы. bilbo Помощь студентам 7 16.09.2014 21:35
Работа с потоками. crazygoldbullet Win Api 7 13.04.2013 18:27
Работа с потоками derElektroBesen Помощь студентам 3 17.07.2011 14:33
Работа с потоками gagarin0 Помощь студентам 0 28.10.2010 22:12
работа с потоками session Общие вопросы C/C++ 6 21.06.2010 17:13