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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2011, 19:45   #1
Savelia
 
Регистрация: 05.06.2011
Сообщений: 4
По умолчанию Очередь в СИ

Разработать приложение, работающее с очередью, содержащей данные о заселении в общежитие. Элементом очереди является структура, содержащая не менее 4-ех элементов. Выполнить добавление, удаление, редактирование элемента очереди, распечатку всей очереди.

Помогите плиз разобраться, это для себя. Значит структуру я сделала, не могли бы несколько примеров привести, как это можно реализовать, буду премного благодарна.

Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
 
 
 
struct Obtchejitie
{
        char Family[25];
        char Name[25];
        int Komnata;
        int Age;
};
 
int VvodKolichestva(void);
void Vyvod_chapka(void);
void Vvod_Dannyh(Obtchejitie *mass, int n);
void Vyvod_Dannyh(Obtchejitie *mass, int n);
 
 
void main(void)
{
        int size, i;
        Obtchejitie *mass;
 
        size = VvodKolichestva();
        mass=(Obtchejitie*)calloc(size, sizeof(Obtchejitie));
        Vvod_Dannyh(mass, size);
        Vyvod_chapka();
        Vyvod_Dannyh(mass, size);
        Extract(mass);
 
}
 
int VvodKolichestva(void)
{
        int n;
 
        printf("\nVvedite kolichestvo zapicey --> ");
        scanf("%d", &n);
 
        return n;
}
void Vyvod_chapka(void)
{
        printf("\n             Tablitcha s dannymy:             \n\n");
        printf("\n--------------------Obtchejitie-------------------");
        printf("\n|  Family       |    Imia    |  Komnata  |Vozrast|");
        printf("\n--------------------------------------------------");
        printf("\n");
}
void Vvod_Dannyh(Obtchejitie *mass, int n)
{
        for (int i=0; i<n; i++) {
                printf ("\nVvedite Family: -> ");
                scanf ("%s", &mass[i].Family);
                printf ("\nVvedite Imia: -> ");
                scanf ("%s", &mass[i].Name);
                printf ("\nVvedite nomer komnaty: -> ");
                scanf ("%d", &mass[i].Komnata);
                printf ("\nVvedite Vozrast: -> ");
                scanf ("%d", &mass[i].Age);
        }
}
void Vyvod_Dannyh(Obtchejitie *mass, int n)
{
        
        for(int i=0; i<n; i++)
                printf("\n|%-15s|%-12s|%11d|%8d|", mass[i].Family, mass[i].Name, mass[i].Komnata, mass[i].Age);
        
}
Savelia вне форума Ответить с цитированием
Старый 09.06.2011, 09:37   #2
was3110
Форумчанин
 
Аватар для was3110
 
Регистрация: 25.04.2010
Сообщений: 254
По умолчанию

готов взяться. e-mail найдите в профиле.
помогать студентам - моя вторая профессия
was3110 вне форума Ответить с цитированием
Старый 12.06.2011, 13:13   #3
Savelia
 
Регистрация: 05.06.2011
Сообщений: 4
По умолчанию Доработка

Вот, что у меня получилось: единственное не могу понять, что значит редактировать, это сортировка или нет, и если да, до помогите плиз с функцией???

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
#include <iostream>


#define FALSE 0
#define TRUE 1

typedef struct Obshejitie {
char Family[25];
char Name[25];
int Mes;
int Chislo;
struct Obshejitie *next;
};

void Enqueue(void);
void Dequeue(void);
void Display(void);
void Sort(void);


Obshejitie *head = NULL;
Obshejitie *tail = NULL;

void main(void)
{

int done = FALSE;
char c;

while (!done) {
Display();
printf ("\n\n1 - Dobavit' zapic', \n2 - Udalit' zapic', \n3 - Quit \n");
c = getch();

switch (c) {
case '1':
Enqueue();
break;
case '2':
Dequeue();
break;
case '4':
Sort();
break;
case '3':
done = TRUE;
break;

}
}
}

void Display(void)
{
Obshejitie *p = head;

system("cls");

if (p == NULL)
printf("V ocheredi net dannyh!!!");
else {
printf("\n Tablitcha s dannymi: \n\n");
printf("\n--------------------Obtchejitie-------------------");
printf("\n| Familia | Imia |Mesiatch |Chislo|");
printf("\n--------------------------------------------------");
printf("\n");
}
while (p != NULL) {
printf ("\n|%-15s|%-15s|%9d|%6d|", p->Family, p->Name, p->Mes, p->Chislo);
printf("\n--------------------------------------------------");
p = p->next;
}
}
void Enqueue(void)
{
Obshejitie *p;

p = (Obshejitie*)malloc(sizeof(Obshejit ie));
printf("\nVvedite Familiyu --> ");
scanf ("%s", &p->Family);
printf("\nVvedite Imia --> ");
scanf ("%s", &p->Name);
printf("\nVvedite Mesiatch registracii --> ");
scanf ("%d", &p->Mes);
if (p->Mes>12) {
printf("\nNecorrectnaia zapic'!!!");
printf("\nPovtorite Vvod ");
getch();
return;
}
if (p->Mes<1) {
printf("\nNecorrectnaia zapic'!!!");
printf("\nPovtorite Vvod ");
getch();
return;
}
printf("\nVvedite Chislo registracii --> ");
scanf ("%d", &p->Chislo);
if (p->Chislo>31) {
printf("\nNecorrectnaia zapic'!!!");
printf("\nPovtorite Vvod ");
getch();
return;
}
if (p->Chislo<1) {
printf("\nNecorrectnaia zapic'!!!");
printf("\nPovtorite Vvod ");
getch();
return;
}
p->next = NULL;

if (head == NULL)
head = p;
else
tail->next = p;
tail = p;
}
void Dequeue(void)
{
Obshejitie *p = head;

if (head != NULL) {
head = head->next;
if (head == NULL)
tail = NULL;
free(p);
}
}
Savelia вне форума Ответить с цитированием
Старый 12.06.2011, 13:14   #4
Savelia
 
Регистрация: 05.06.2011
Сообщений: 4
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
#include <iostream>


#define FALSE 0
#define TRUE 1

typedef struct Obshejitie {
	char Family[25];
	char Name[25];
	int Mes;
	int Chislo;
	struct Obshejitie *next;
};

void Enqueue(void);
void Dequeue(void);
void Display(void);
void Sort(void);


Obshejitie *head = NULL;
Obshejitie *tail = NULL;

void main(void)
{
	
	int done = FALSE;
	char c;

	while (!done) {
		Display();
		printf ("\n\n1 - Dobavit' zapic', \n2 - Udalit' zapic', \n3 - Quit \n");
		c = getch();
		
		switch (c) {
			case '1':
				Enqueue();
				break;
			case '2':
				Dequeue();
				break;
			case '3':
				done = TRUE;
				break;
			
		}
	}
}

void Display(void)
{
	Obshejitie *p = head;

	system("cls");

	if (p == NULL)
		printf("V ocheredi net dannyh!!!");
	else {
		printf("\n            Tablitcha s dannymi:             \n\n");
	printf("\n--------------------Obtchejitie-------------------");
	printf("\n|  Familia      |  Imia         |Mesiatch |Chislo|");
	printf("\n--------------------------------------------------");
	printf("\n");
	}
	while (p != NULL) {
		printf ("\n|%-15s|%-15s|%9d|%6d|", p->Family, p->Name, p->Mes, p->Chislo);
		printf("\n--------------------------------------------------");
		p = p->next;
	}
}
void Enqueue(void)
{
	Obshejitie *p;

	p = (Obshejitie*)malloc(sizeof(Obshejitie));
	printf("\nVvedite Familiyu --> ");
	scanf ("%s", &p->Family);
	printf("\nVvedite Imia --> ");
	scanf ("%s", &p->Name);
	printf("\nVvedite Mesiatch registracii --> ");
	scanf ("%d", &p->Mes);
	if (p->Mes>12) {
		printf("\nNecorrectnaia zapic'!!!");
		printf("\nPovtorite Vvod ");
		getch();
		return;
	}
	if (p->Mes<1) {
		printf("\nNecorrectnaia zapic'!!!");
		printf("\nPovtorite Vvod ");
		getch();
		return;
	}
	printf("\nVvedite Chislo registracii --> ");
	scanf ("%d", &p->Chislo);
	if (p->Chislo>31) {
		printf("\nNecorrectnaia zapic'!!!");
		printf("\nPovtorite Vvod ");
		getch();
		return;
	}
	if (p->Chislo<1) {
		printf("\nNecorrectnaia zapic'!!!");
		printf("\nPovtorite Vvod ");
		getch();
		return;
	}
	p->next = NULL;

	if (head == NULL)
		head = p;
	else
		tail->next = p;
	tail = p;
}
void Dequeue(void)
{
	Obshejitie *p = head;

	if (head != NULL) {
		head = head->next;
		if (head == NULL)
			tail = NULL;
		free(p);
	}
}
Savelia вне форума Ответить с цитированием
Старый 12.06.2011, 14:56   #5
Savelia
 
Регистрация: 05.06.2011
Сообщений: 4
По умолчанию

Написала функцию сортировки, помогите найти ошибку?????

Код:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
#include <iostream>


#define FALSE 0
#define TRUE 1

typedef struct Obshejitie {
	char Family[25];
	char Name[25];
	int Mes;
	int Chislo;
	struct Obshejitie *next;
};

void Enqueue(void);
void Dequeue(void);
void Display(void);
void Instruction(void);
void Sort(void);


Obshejitie *head = NULL;
Obshejitie *tail = NULL;

void main(void)
{
	
	int done = FALSE;
	char c;

	while (!done) {
		Display();
		Instruction();
		c = getch();
		
		switch (c) {
			case '1':
				Enqueue();
				break;
			case '2':
				Dequeue();
				break;
			case '3':
				done = TRUE;
				break;
			case '4':
				Sort();
				break;
			default:
				printf ("Неправильный выбор.\n\n");
				getch();
				Instruction();
				break;

			
		}
	}
}

void Display(void)
{
	Obshejitie *p = head;

	system("cls");

	if (p == NULL)
		printf("V ocheredi net dannyh!!!");
	else {
		printf("\n            Tablitcha s dannymi:             \n\n");
	printf("\n--------------------Obtchejitie-------------------");
	printf("\n|  Familia      |  Imia         |Mesiatch |Chislo|");
	printf("\n--------------------------------------------------");
	printf("\n");
	}
	while (p != NULL) {
		printf ("\n|%-15s|%-15s|%9d|%6d|", p->Family, p->Name, p->Mes, p->Chislo);
		printf("\n--------------------------------------------------");
		p = p->next;
	}
}
void Enqueue(void)
{
	Obshejitie *p;

	p = (Obshejitie*)malloc(sizeof(Obshejitie));
	printf("\nVvedite Familiyu --> ");
	scanf ("%s", &p->Family);
	printf("\nVvedite Imia --> ");
	scanf ("%s", &p->Name);
	printf("\nVvedite Mesiatch registracii --> ");
	scanf ("%d", &p->Mes);
	if (p->Mes>12) {
		printf("\nNecorrectnaia zapic'!!!");
		printf("\nPovtorite Vvod ");
		getch();
		return;
	}
	if (p->Mes<1) {
		printf("\nNecorrectnaia zapic'!!!");
		printf("\nPovtorite Vvod ");
		getch();
		return;
	}
	printf("\nVvedite Chislo registracii --> ");
	scanf ("%d", &p->Chislo);
	if (p->Chislo>31) {
		printf("\nNecorrectnaia zapic'!!!");
		printf("\nPovtorite Vvod ");
		getch();
		return;
	}
	if (p->Chislo<1) {
		printf("\nNecorrectnaia zapic'!!!");
		printf("\nPovtorite Vvod ");
		getch();
		return;
	}
	p->next = NULL;

	if (head == NULL)
		head = p;
	else
		tail->next = p;
	tail = p;
}
void Dequeue(void)
{
	Obshejitie *p = head;

	if (head != NULL) {
		head = head->next;
		if (head == NULL)
			tail = NULL;
		free(p);
	}
}
void Instruction(void)
{
	printf ("\n\n1 - Dobavit' zapic', \n2 - Udalit' zapic', \n3 - Quit \n4 - Sortirovat'");
}
void Sort(void)
{
	Obshejitie *p1 = head;
	Obshejitie *p2 = head->next;
	Obshejitie p3;
	int rez1;
	int rez2;

	rez1 = (p1->Mes)*10+p1->Chislo;
	rez2 = (p2->Mes)*10+p2->Chislo;

	while (head->next!= NULL) {
		
	if (rez1 > rez2) {
		p3 = *p1;
		*p1 = *p2;
		*p2 = p3;
	}	
		printf ("\n|%-15s|%-15s|%9d|%6d|", p1->Family, p1->Name, p1->Mes, p1->Chislo);
		printf("\n--------------------------------------------------");
		p1 = p1->next;
	
	}
}
Savelia вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очередь Sarmat) Помощь студентам 0 10.03.2011 12:33
Очередь Си savra Помощь студентам 1 22.04.2010 18:48
Очередь C++ svetikzo Помощь студентам 2 23.01.2010 09:53
Очередь skiffter Помощь студентам 2 03.12.2009 17:39
Очередь Юлькин Общие вопросы C/C++ 4 30.05.2009 16:00