Студентам с лабораторными сюда (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 20 Jun 2007.

Thread Status:
Not open for further replies.
  1. Porrter

    Porrter New Member

    Joined:
    24 Aug 2009
    Messages:
    0
    Likes Received:
    2
    Reputations:
    -10
    Помогите срочно решить одну задачку. До завтра надо сделать.

    Спроектировать и разработать программу позволяющую создавать процессы и
    управлять уже созданными. Программа должна обладать следующим набором
    возможностей:
    В интерактивном режиме запускать указанные процессы.
    Уничтожать указанный процесс (уничтожаться могут только процессы запущенные
    программой). Уничтожаемый процесс указывается либо его описателем, либо
    выбирается в интерактивном режиме.
    Показать список всех процессов (а также своих копий) запущенных программой.
    Программа должна знать о всех своих запушенных копиях.
    Программа должна уметь обмениваться со своими копиями списками порождённых
    процессов.
    При закрытии программы она должна уничтожить все порождённые ею процессы.

    Примечания:
    Новый процесс запускается функцией CreateProcess и уничтожается функцией
    TerminateProcess.
    Запускаемый процесс указывается именем своего исполняемого файла.
    Для обмена данными между копиями программы можно использовать переменные
    окружения. Для работы с переменными окружения используются следующие функции:
    GetEnvironmentVariable, SetEnvironmentVariable.
    В случае реализации программы в консольном варианте для обработки попыток
    закрытия программы необходимо использовать функцию SetConsoleCtrlHandle.
    Описание необходимых функций можно посмотреть в MSDN Library.
    Пользовательский интерфейс может быть реализован в любом варианте (текстовый,
    графический).Спроектировать и разработать программу позволяющую создавать процессы и
    управлять уже созданными. Программа должна обладать следующим набором
    возможностей:
    В интерактивном режиме запускать указанные процессы.
    Уничтожать указанный процесс (уничтожаться могут только процессы запущенные
    программой). Уничтожаемый процесс указывается либо его описателем, либо
    выбирается в интерактивном режиме.
    Показать список всех процессов (а также своих копий) запущенных программой.
    Программа должна знать о всех своих запушенных копиях.
    Программа должна уметь обмениваться со своими копиями списками порождённых
    процессов.
    При закрытии программы она должна уничтожить все порождённые ею процессы.

    Примечания:
    Новый процесс запускается функцией CreateProcess и уничтожается функцией
    TerminateProcess.
    Запускаемый процесс указывается именем своего исполняемого файла.
    Для обмена данными между копиями программы можно использовать переменные
    окружения. Для работы с переменными окружения используются следующие функции:
    GetEnvironmentVariable, SetEnvironmentVariable.
    В случае реализации программы в консольном варианте для обработки попыток
    закрытия программы необходимо использовать функцию SetConsoleCtrlHandle.
    Описание необходимых функций можно посмотреть в MSDN Library.
    Пользовательский интерфейс может быть реализован в любом варианте (текстовый,
    графический).
     
  2. Porrter

    Porrter New Member

    Joined:
    24 Aug 2009
    Messages:
    0
    Likes Received:
    2
    Reputations:
    -10
    Заранее благодарен=) Предпосительный язык - C#
     
  3. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Что WinApi + C# это гемор!
    Лучше сам пиши на С++. Примеров дофига ;)
     
  4. warkk

    warkk Member

    Joined:
    20 Feb 2009
    Messages:
    139
    Likes Received:
    23
    Reputations:
    0
    первая, проверяет вводимые числа на четность, если число не четное, ломает цикл.

    Code:
    program ddd;
    uses crt;
    var i,n,sum,t:integer;
    begin clrscr;
    write('Vvedite kol-vo: ');
    read(n);
    for i:=1 to n do
        begin
            write('Vvedite 4islo nomer ',i,': ');
            readln(t);
            if odd(t)=false then
               sum:=sum+t
            else
                begin
                     writeln('4islo ',t,' ne 4etnoe');
                     break;
                end;
        end;
    writeln('Suma 4isel = ',sum);
    readkey
    end.
     
    #2564 warkk, 3 Apr 2010
    Last edited: 3 Apr 2010
  5. Lewis Carroll

    Lewis Carroll New Member

    Joined:
    28 Feb 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Задача следующего плана:

    составить программу, сравнивающую три вида сортировок (любые сортировки т.е. быстрая, пузырьком и т. д. все годятся) и выдающую в результате сколько времени было затрачено на сортировку массива данных. (желательный размер массива ~100 кб, чтобы разница во времени была очевидной)

    язык C/C++

    заранее благодарен.
     
  6. sveta11115

    sveta11115 New Member

    Joined:
    20 Mar 2010
    Messages:
    12
    Likes Received:
    3
    Reputations:
    0
    Помогите, пожалуйста, написать программу на С++:
    Используя структурный тип данных, создать базу данных для обработки информации о студентах: фамилия, год рождения, факультет, группа, статус поступления.
    и организовать с ней работу, включая поиск нужной информации, ее корректировку (изменение значений полей структур, дозапись информации в файл или ее удаление), вывод информации на экран.
    Программа должна содержать меню, позволяющее работать с базой данных.
    Спасибо
     
  7. xxxxxxxxxxxxxxx

    xxxxxxxxxxxxxxx Elder - Старейшина

    Joined:
    20 Jan 2008
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    у меня есть приблизительно 500 строк кода, почему то сюда не полезли если очень надо пишите в асю или в лс
     
    #2567 xxxxxxxxxxxxxxx, 3 Apr 2010
    Last edited: 3 Apr 2010
  8. comichero92

    comichero92 New Member

    Joined:
    29 Mar 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    хм... наверно что-то такое
    Code:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <time.h>
    
    void bubble(char *items, int count);
    void shaker(char *items, int count);
    void shell(char *items, int count);
    
    int main(void)
    {
    	FILE *fp;
    	FILE *s1;
    	FILE *s2;
    	FILE *s3;
    	char s[255];
    	time_t start, end;
    	volatile long unsigned t;
    
    	printf("read file");
    
    	if((fp = fopen("mass.txt", "r")) == NULL) {
    		printf(" : error.\n");
    		exit(1);
    	}
    
    	printf(" : ok.\n\n");
    
    	while(!feof(fp)) {
    		fgets(s, 253, fp);
    	}
    
    	start = time(NULL);
    	bubble(s, strlen(s));
    	end = time(NULL);
    	s1 = fopen("bubble.txt", "w");
    	fputs(s, s1);
    	printf("Bubble sort : ok.\n");
    	printf("time: %f s.\n\n", difftime(end, start));
    
    	start = time(NULL);
    	shaker(s, strlen(s));
    	end = time(NULL);
    	s2 = fopen("shaker.txt", "w");
    	fputs(s, s2);
    	printf("Cocktail shaker sort : ok.\n");
    	printf("time: %f s.\n\n", difftime(end, start));
    
    	start = time(NULL);
    	shaker(s, strlen(s));
    	end = time(NULL);
    	s3 = fopen("shell.txt", "w");
    	fputs(s, s3);
    	printf("Donald Lewis Shell sort : ok.\n");
    	printf("time: %f s.\n\n", difftime(end, start));
    
    	fclose(fp);
    	fclose(s1);
    	fclose(s2);
    	fclose(s3);
    	return 0;
    }
    
    // bubble sort
    void bubble(char *items, int count)
    {
    	register int a, b;
    	register char t;
    
    	for(a = 1; a < count; ++a)
    		for(b = count-1; b >= a; --b) {
    			if(items[b-1] > items[b]) {
    				t = items[b-1];
    				items[b-1] = items[b];
    				items[b] = t;
    			}
    		}
    }
    
    // cocktail shaker sort
    void shaker(char *items, int count)
    {
    	register int a;
    	int exchange;
    	char t;
    
    	do{
    		exchange = 0;
    		for(a = count-1; a >0; --a) {
    			if(items[a-1] > items[a]) {
    				t = items[a-1];
    				items[a-1] = items[a];
    				items[a] = t;
    				exchange = 1;
    			}
    		}
    
    		for(a = 1; a < count; ++a) {
    			if(items[a-1] > items[a]) {
    				t = items[a-1];
    				items[a-1] = items[a];
    				items[a] = t;
    				exchange = 1;
    			}
    		}
    	} while(exchange);
    }
    
    // Donald Lewis Shell sort
    void shell(char *items, int count)
    {
    	register int i, j, gap, k;
    	char x, a[5];
    
    	a[0] = 9; a[1] = 5; a[2] = 3; a[3] = 2; a[4] = 1;
    
    	for(k = 0; k < 5; k++) {
    		gap = a[k];
    		for(i = gap; i < count; ++i) {
    			x = items[i];
    			for(j=i-gap; (x < items[j]) && (j >= 0); j = j-gap)
    				items[j+gap] = items[j];
    			items[j+gap] = x;
    		}
    	}
    }
    p.s. размер сортируемых данных думаю сам изменишь :)
     
  9. Lewis Carroll

    Lewis Carroll New Member

    Joined:
    28 Feb 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Большое спасибо )) а как работать с сортируемыми файлами? создать соответствующие файлы (bubble.txt shaker.txt shell.txt) заполненные данными?
     
    #2569 Lewis Carroll, 4 Apr 2010
    Last edited: 4 Apr 2010
  10. comichero92

    comichero92 New Member

    Joined:
    29 Mar 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    создать файл mass.txt, в нем то что будем сортировать, файлы bubble.txt, shell.txt и shaker.txt сами создадутся и в них будут отсортированные данные
     
  11. Lewis Carroll

    Lewis Carroll New Member

    Joined:
    28 Feb 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0



    а вторая сортировка это какая ?
    первая - пузырек, третья - Шелла.. а вторая - ?..)
     
  12. comichero92

    comichero92 New Member

    Joined:
    29 Mar 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    шейкер сортировка(shaker sort), модифицированная пузырьковая
     
  13. Lewis Carroll

    Lewis Carroll New Member

    Joined:
    28 Feb 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    А можно ли как то реализовать такую фичу, чтобы на основании затраченного времени строилась гистограмма для каждой сортировки?
     
  14. xxxxxxxxxxxxxxx

    xxxxxxxxxxxxxxx Elder - Старейшина

    Joined:
    20 Jan 2008
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0

    например создать функцию вывода звездочек
    void chart(difftime)
    которая в цикле до difftime будет печатать "*"
     
  15. Lewis Carroll

    Lewis Carroll New Member

    Joined:
    28 Feb 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    #include <iostream.h>
    #include <conio.h>
    #include <dos.h>
    #define MAX 20
    void bubble(int *x,int n);
    void shell(int *x,int n);
    void insert(int *x,int n);
    void main()
    { int num[MAX],i;
    int t1,t2;
    cout << "Before sort:\n";
    for(i=0; i<MAX; i++)
    { num=random(MAX);
    cout << num << " ";
    }
    cout << endl;
    t1=GetTickCount();
    bubble(num,MAX);
    shell(num,MAX);
    insert(num,MAX);
    t2=GetTickCount();
    cout << t2-t1;

    cout << "After sort:" << endl;
    for(i=0; i<MAX; i++)
    cout << num << " ";
    cout << endl;

    cout << "end";
    getch();
    }

    void bubble(int *x, int n)
    { register int i,j;
    int tmp;
    for(i=1;i<n;i++)
    for(j=n-1;j>=i; j--)
    if(x[j-1]>x[j])
    { tmp=x[j-1]; x[j-1]=x[j]; x[j]=tmp; }
    }

    void insert(int *x, int n)
    { register int i,j;
    int tmp;
    for(i=1;i<n;i++)
    { tmp=x;
    for(j=i-1;j>=0 && tmp<x[j]; j--)
    x[j+1]=x[j];
    x[j+1]=tmp;
    }
    }
    void shell(int *x, int n)
    { register int i,j,gap,k;
    int xx;
    char a[5]={9,5,3,2,1};
    for(k=0;k<5;k++)
    { gap=a[k];
    for(i=gap;i<n;i++)
    { xx=x;
    for(j=i-gap; xx<x[j] && j>=0; j=j-gap)
    x[j+gap]=x[j];
    x[j+gap]=xx;
    }
    }
    }





    переписал программу сортировки в следующем виде...
    вылетают непонятные ошибки.. может кто нибудь разъяснить?
     
  16. comichero92

    comichero92 New Member

    Joined:
    29 Mar 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0


    Если ты используешь Visual Studio то для твоей программы следующие хедеры:

    #include <windows.h> // для работы GetTickCount(); (Windows API function)
    #include <conio.h>
    #include <iostream>

    использовать пространство имен
    using namespace std;

    я не помню что нужно подключить чтобы заработал random() :( почему бы не использовать rand() и srand() ? :)
     
  17. Lewis Carroll

    Lewis Carroll New Member

    Joined:
    28 Feb 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    пишу на борланде..) windows.h не хочет подключаться %)
    может как то по-другому можно посчитать время выполнения алгоритма?
     
  18. comichero92

    comichero92 New Member

    Joined:
    29 Mar 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    функция difftime не подойдет?

    Code:
    #include <time.h>
    #include <stdio.h>
    
    int main(void)
    {
    	time_t start, end;
    	volatile long unsigned t;
    	
    	start = time(NULL);
    	for(t = 0; t < 5000000; t++);
    	end = time(NULL);
    	
    	printf("Цикл использовал %f секунд. \n", difftime(end, start));
    	
    	return 0;
    }
     
  19. Linkus

    Linkus Member

    Joined:
    20 Dec 2008
    Messages:
    168
    Likes Received:
    15
    Reputations:
    -1
    это как понять?? 0_о

    что происходит то вообще?
     
  20. Voz7Var

    Voz7Var New Member

    Joined:
    3 Jan 2010
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Всем салют :) У меня домашка. 3 задачи сделал (потенциально :D), а одно нет.

    Нужно на C.

    Задачу проще было пртскринуть :D

    [​IMG]

    Спасибо за внимание!
     
    #2580 Voz7Var, 7 Apr 2010
    Last edited: 7 Apr 2010
Thread Status:
Not open for further replies.