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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2010, 19:31   #1
Singularity
Новичок
Джуниор
 
Регистрация: 04.05.2010
Сообщений: 1
По умолчанию Работа со стеком,С++

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

в

cba
54321


Преподаватель дал подсказку использовать 2 стека записав в первый строки через стринг и переписав во второй уже символьно. Операции по извлечению и записыванию в стек не могут конвертировать данные из string в char. Помогите это исправить или найти где можно об этом посмотореть.

Код:
#include "stdafx.h" 
#include <iostream>
#include <fstream>
#include <math.h>
#include <string>
#include <stdio.h>
#include <locale>
#include <conio.h>
#include <iomanip>
#include <windows.h>
using namespace std;


char b;
int MaxSize=100;
int StkSize;
int MaxSize2=100;
int StkSize2;



struct Stack         
{
     string	 c;
     Stack* pNext;
}*point;

struct Stack2          
{
     char c;
     Stack2* pNext;
}*point2;

int StkInit1(int& StkSiz, Stack **point)
{ 
   *point = NULL;
   StkSiz = 0;
   return 1;
}


int StkInit2(int& StkSiz, Stack2 **point2)
{ 
   *point2 = NULL;
   StkSiz = 0;
   return 1;
}


int push(int &StkSiz, int MaxSiz, char Data, Stack **point)
{ 
if (StkSiz >= MaxSiz) return 0;
else
   {
   Stack *point1 = new Stack();
   point1->c = Data;
   point1->pNext = *point;
   *point = point1;
   StkSiz++;
   return 1;
   }
}

int pop(int &StkSiz, int MaxSiz, char& Data, Stack **point)
{ 
if (StkSiz == 0) return 0;
else
   {
   Stack *point1 = new Stack();
   point1 = *point;
   Data = point1->c;
   *point = (**point).pNext;
   delete point1;
   StkSiz--;
   return 1;
   }
}


int push2(int &StkSiz, int MaxSiz, string Data, Stack2 **point2)
{ 
if (StkSiz >= MaxSiz) return 0;
else
   {
   Stack2 *point1 = new Stack2();
   point1->c = Data;
   point1->pNext = *point2;
   *point2 = point1;
   StkSiz++;
   return 1;
   }
}


int pop2(int &StkSiz, int MaxSiz, string& Data, Stack2 **point2)
{ 
if (StkSiz == 0) return 0;
else
   {
   Stack2 *point1 = new Stack2();
   point1 = *point2;
   Data = point1->c;
   *point2 = (**point2).pNext;
   delete point1;
   StkSiz--;
   return 1;
   }
}


int _tmain(int argc, _TCHAR* argv[]) 
{
ifstream in("input.txt");
ofstream out("output.txt");


StkInit1(StkSize,&point);
StkInit2(StkSize2,&point2);

string a;
	
   while (in >> a)

	{
		push(StkSize,MaxSize,a,&point); 
	}
	while(StkSize!=0)
	{
		pop(StkSize,MaxSize,b,&point);

		push2(StkSize2,MaxSize2,b,&point2); 
	
	while(StkSize!=0)
	{
		pop2(StkSize2,MaxSize2,b,&point2);

	}
	
    }
	
	out<<b;
 
in.close();
out.close();
return 0;
}

Последний раз редактировалось Singularity; 04.05.2010 в 19:33.
Singularity вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль,работа со стеком. Nelson1992 Помощь студентам 1 03.02.2010 13:49
работа со стеком xarvenx Общие вопросы C/C++ 1 25.06.2009 13:31
работа со стеком Katovski Помощь студентам 8 12.06.2008 11:30