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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2017, 18:25   #1
Lucky_Vadim
Пользователь
 
Регистрация: 12.12.2017
Сообщений: 22
По умолчанию [C] Помогите! если ввожу первым Х, то ничего не получается. И почему я не могу ввести больше одного числа?

Код:
#include "stdafx.h" 
#include "windows.h" 
#include "ctype.h" 
#include "conio.h" 
#include "string.h" 
#define NUM_MAXLEN 40 

typedef struct queue
{
	char value;
	struct queue *next;
} QUEUE;

QUEUE* input(char* x, char* y, char* z); 
void create(QUEUE *ptr, char c); 
void output(QUEUE *ptr); 
char charIn();
QUEUE* task(QUEUE* queue1, char x, char y, char z); 

int _tmain(int argc, _TCHAR* argv[])
{
	QUEUE *inputPtr, *newPtr;
	char x, y, z;

	system("color F0");
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	inputPtr = input(&x, &y, &z);
	printf("\nВведённый список:");
	output(inputPtr);
	newPtr = task(inputPtr, x, y, z);
	printf("Новый список:");
	output(newPtr);
	system("pause");

	return 0;
}

char charIn()
{
	unsigned char c = '\0';
	char c1;
	bool inp = false;

	while (c != 13)
	{
		c = _getch();
		if (!inp)
		{
			printf("%c", c);
			c1 = c;
			inp = true;
		}
		else if (c == 8 && inp)
		{
			printf("\b");
			printf(" ");
			printf("\b");
			inp = false;
		}
	}

	return c1;
}

QUEUE* input(char* x, char* y, char* z)
{
	char c = '\0';
	float num;
	int i;
	QUEUE* ptr = new QUEUE;
	QUEUE* head = ptr;

	printf("Введите X: ");
	*x = charIn();
	printf("\n");
	printf("Введите Y: ");
	*y = charIn();
	printf("\n");
	printf("Введите Z: ");
	*z = charIn();
	printf("\n");
	for (i = 0; c != 13; i++)
	{
		printf("A[%d]: ", i + 1);
		c = charIn();
		if (c == 13)
		{
			delete ptr->next;
			ptr->next = NULL;
		}
		else
		{
			if (i != 0)
				ptr = ptr->next;
			create(ptr, c);
		}
		printf("\n");
	}
	printf("\n");

	return head;
}

void create(QUEUE *ptr, char c)
{
	ptr->value = c;
	ptr->next = new QUEUE;
}

void output(QUEUE *ptr)
{
	printf("\n");
	do
	{
		printf("%c ", ptr->value);
		ptr = ptr->next;
	} while (ptr->next != NULL);
	printf("%c", ptr->value);
	printf("\n\n");
}

QUEUE* task(QUEUE* queue1, char x, char y, char z)
{
	QUEUE* queue2 = new QUEUE;
	QUEUE* head = queue2;

	while (queue1->next != NULL)
	{
		if (queue1->next->value == x)
		{
			create(queue2, queue1->value);
			queue2 = queue2->next;
			create(queue2, y);
			queue2 = queue2->next;
			create(queue2, x);
			queue2 = queue2->next;
			create(queue2, z);
			if (queue1->next != NULL)
				queue2 = queue2->next;
			queue1 = queue1->next;
		}
		else
		{
			create(queue2, queue1->value);
			if (queue1->next != NULL)
				queue2 = queue2->next;
		}
		queue1 = queue1->next;
	}
	queue2->value = queue1->value;
	queue2->next = NULL;

	return head;
}
Изображения
Тип файла: jpg 5gw023lP464.jpg (56.7 Кб, 135 просмотров)
Lucky_Vadim вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ввести 3 числа а,b,c. Если не одно число не равно нулю, то написать в переменную k сред. арифметическое захаркин Помощь студентам 4 22.09.2016 12:01
Помогите написать коды ничего не получается срочно Галинкамалинка1998 Помощь студентам 3 29.11.2013 22:54
почему не могу ввести строку s2? гоша37 Паскаль, Turbo Pascal, PascalABC.NET 1 15.11.2012 21:16
C/C++ Вложенные односвязные линейные списки. Неправильно получается ввожу их(скриншот + код(C++)) kirilllosev Помощь студентам 0 02.06.2012 12:45
скрипт который не даст ввести с столбец A числа длиной меньше 3 и больше 10 Olya1985 Microsoft Office Excel 2 03.01.2011 03:15