Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 466
∙ повысить рейтинг »
D-mon55
Статус: 2-й класс
Рейтинг: 75
∙ повысить рейтинг »
CradleA
Статус: Профессионал
Рейтинг: 74
∙ повысить рейтинг »

∙ С / С++

Номер выпуска:1869
Дата выхода:27.05.2016, 19:21
Администратор рассылки:Андрей Кузнецов aka Dr_Andrew (Старший модератор)
Подписчиков / экспертов:19 / 14
Вопросов / ответов:2 / 2

Консультация # 189468: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Здравствуйте. Хочу сделать учет данных спортивного комплекса. Вопрос, как мне сделать два пользователя? один администратор, другой пользователь... ...
Консультация # 189469: Здравствуйте! Прошу помощи в следующем вопросе: Задание 1. Разработать подпрограммы операций функциональной спецификации стека при цепном представлении (включая проверку на пустоту и просмотр содержимого стека). 2. Разработать демонстрационную программу работы со стеком с возможностью выбора формы физического представления и просмотра...

Консультация # 189468:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Здравствуйте. Хочу сделать учет данных спортивного комплекса. Вопрос, как мне сделать два пользователя? один администратор, другой пользователь...

Дата отправки: 22.05.2016, 14:37
Вопрос задал: Посетитель - 399158 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Андрей Кузнецов aka Dr_Andrew (Старший модератор):

Здравствуйте, Посетитель - 399158!

Очевидное решение: вести учёт пользователей в базе данных SQLite; при этом Ваша программа будет выполнять роль оболочки для этой базы.
Руководство по связке C++ и SQLite можно прочесть здесь.
Описание интерфейса C++ / SQLite - здесь и здесь.
Информация по авторизации пользователей в SQLite - здесь.

Простой пример (на русском языке) по созданию программы, использующей SQLite, с помощью C++ / Qt можно найти здесь.

Консультировал: Андрей Кузнецов aka Dr_Andrew (Старший модератор)
Дата отправки: 22.05.2016, 16:23
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 189469:

Здравствуйте! Прошу помощи в следующем вопросе:
Задание
1. Разработать подпрограммы операций функциональной спецификации стека при цепном представлении (включая проверку на пустоту и просмотр содержимого стека).

2. Разработать демонстрационную программу работы со стеком с возможностью выбора формы физического представления и просмотра результатов операций.


Программа:

#include "stdafx.h"
#include <stdlib.h>
#include <iostream>

using namespace std;

typedef struct Stack
{
	int info;
	struct Stack *next;
}Stack_t;

Stack *Top, *NE, *End;

void push(Stack_t **head, int data)
{

	Stack_t *tmp = (Stack_t*)malloc(sizeof(Stack_t));

	if (tmp == NULL)
	{
		exit(0);
	}
	tmp->next = *head;
	tmp->info = data;
	*head = tmp;
}

int pop(Stack_t **head)
{
	Stack_t *out;
	int value;
	if (*head == NULL)
	{
		exit(0);
	}
	out = *head;
	*head = (*head)->next;
	value = out->info;
	free(out);
	return value;
}

int pick(Stack_t* head)
{
	if (head == NULL)
	{
		exit(0);
	}
	return head->info;
}

void show_stack(Stack_t* head)
{
	while (head)
	{
		cout << head->info << " ";
		head = head->next;
	}
	cout << endl;
}

int getSize(Stack_t *head)
{
	int size = 0;
	while (head)
	{
		size++;
		head = head->next;
	}
	return size;
}

int main()
{
	setlocale(LC_ALL, "Russian");
	Stack s;
	Stack_t *head = NULL;
	int key, value;
	do
	{
		cout << "1. Добавить" << endl;
		cout << "2. Удалить" << endl;
		cout << "3. Top" << endl;
		cout << "4. Размер" << endl;
		cout << "5. Показать стек" << endl;
		cout << "0. Выход\n" << endl;
		cout << "Команда: "; cin >> key;

		switch (key)
		{
		case(1) :
		{
			cout << "Введите значене: "; cin >> value; push(&head, value);
		} break;
		case(2) :
		{
			if (head)
			{
				pop(&head); cout << "Удален" << endl;
			}
			else
				cout << "Стек пуст" << endl;
		} break;
		case(3) :
		{
			cout << "Top: " << pick(head) << endl;
		} break;
		case(4) :
		{
			cout << "Размер стека: " << getSize(head) << endl;
		} break;
		case(5) :
		{
			show_stack(head);
		} break;
		case 0: break;
		default: cout << endl << "Ошибка\n\n";
			break;
		}
	} while (key != 0);

	return 0;
}



Вопрос, как мне сделать, чтобы я мог вводить вместо значение слова?

Дата отправки: 22.05.2016, 18:01
Вопрос задал: Посетитель - 399158 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Вот Вам программа для хранения в стеке строк

#include <stdlib.h>
#include <iostream>

using namespace std;

typedef struct Stack
{
	char* info;
	struct Stack *next;
}Stack_t;

Stack *Top, *NE, *End;

void push(Stack_t **head, char* data)
{

	Stack_t *tmp = (Stack_t*)malloc(sizeof(Stack_t));

	if (tmp == NULL)
	{
		exit(0);
	}

	tmp->info =  (char*)malloc(strlen(data)+1);
	if (tmp->info == NULL)
	{
		exit(0);
	}
	
	tmp->next = *head;
	strcpy(tmp->info, data);
	*head = tmp;
}

char* pop(Stack_t **head)
{
	Stack_t *out;
	char* value;
	if (*head == NULL)
	{
		exit(0);
	}
	out = *head;
	*head = (*head)->next;
	value = out->info;
	free(out);
	return value;
}

char* pick(Stack_t* head)
{
	if (head == NULL)
	{
		exit(0);
	}
	return head->info;
}

void show_stack(Stack_t* head)
{
	while (head)
	{
		cout << head->info << " ";
		head = head->next;
	}
	cout << endl;
}

int getSize(Stack_t *head)
{
	int size = 0;
	while (head)
	{
		size++;
		head = head->next;
	}
	return size;
}

int main()
{
	setlocale(LC_ALL, "Russian");
	Stack s;
	Stack_t *head = NULL;
	int key;
	char value[256];
	do
	{
		cout << "1. Добавить" << endl;
		cout << "2. Удалить" << endl;
		cout << "3. Top" << endl;
		cout << "4. Размер" << endl;
		cout << "5. Показать стек" << endl;
		cout << "0. Выход\n" << endl;
		cout << "Команда: "; cin >> key;

		switch (key)
		{
		case(1) :
		{
			cout << "Введите значене: "; cin >> value; push(&head, value);
		} break;
		case(2) :
		{
			if (head)
			{
				free(pop(&head)); cout << "Удален" << endl;
			}
			else
				cout << "Стек пуст" << endl;
		} break;
		case(3) :
		{
			cout << "Top: " << pick(head) << endl;
		} break;
		case(4) :
		{
			cout << "Размер стека: " << getSize(head) << endl;
		} break;
		case(5) :
		{
			show_stack(head);
		} break;
		case 0: break;
		default: cout << endl << "Ошибка\n\n";
			break;
		}
	} while (key != 0);

	return 0;
}

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 23.05.2016, 13:45
Рейтинг ответа:

НЕ одобряю +1 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное