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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2012, 23:11   #1
Nursi
 
Регистрация: 05.06.2012
Сообщений: 4
По умолчанию dvusvyaznye spiski. visual C++

napisal programmu kotoraya udalyaet iz dvusvyaznogo spiska 4islu, kotoraya yavlaetsya palindromom, programma kogda na4inaet udalyat sleva, to ona udalyaet vse cifru yavlyayuwiesya palindromom, no kogda ona na4inaet spravo udalyat ona ostavlyaet pervuyu cifru, hotya ona palindrom...
(palindrom-eto slovo ili 4islo kotoroe 4itaetsya odinakogo s obeih storon)

ona vyvodit vot tak vot: naprimer vvodim 1 2 3 4 5 vse yavlyaetsya palindromom

Код:
vvedite chislo: 1 2 3 4 5

spisok do udaleniya palindroma
sleva napravo
5 4 3 2 1
sprava nalevo
1 2 3 4 5

spisok posle udaleniya palindroma
sleva napravo

sprava nalevo
1
a ona doljna vyvodit' 1, hotya 1 yavlyaetsya palindromom, ona doljna vyvodit' "pusto", to est' ni4ego, kak "sleva napravo".

vot, kod programmy...

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

using namespace std;

bool f(int n)
{
	int t=n,newn=0,k;
	while(t>0)
	{
			k=t%10;
			newn=newn*10+k;
			t=t/10;
	}


	if(n==newn)
		return true;
	else
		return false;
}

struct node
{
	int g; 
	node *rlink, *llink; 
};
void llist(node *left)
{
	node *k=left;
	while (k != NULL)
	{
		printf("%d\t", k->g);
		k=k->rlink;
	}
}
void rlist(node *right)
{
	node *k=right;
	while (k != NULL)
	{
		printf ("%d\t", k->g);
		k=k->llink;
	}
}

void main()
{
	node *k, *q, *left, *right;
	int w;
	printf("Vvedite chislo: ");
	scanf("%d",&w);
	k = new node;
	k->g = w;
	k->rlink = NULL;
	k->llink = NULL;
	right = k;
	q = k;
	printf("Vvedite sled. chislo: ");
	scanf("%d", &w);

	while(!feof(stdin))
	{
		k=new node;
		k->g = w;
		k->rlink = q;
		q->llink = k;
                q = k;
		printf("Vvedite sled. chislo: ");
		scanf("%d",&w);
	}
	q->llink = NULL;
	left = q;
           printf("\nSpisok do udaleniya palindroma: \n");
	printf("\nsleva napravo\n ");
	llist(left);
	printf("\nsprava nalevo\n");
        rlist(right);
        node *l;
	l = k = left;
	while(k!=NULL)
	{
		if (f(k->g)==1)
		{ //' u menya gde to zdes' owibka
			if (k == left)
			{ // udalenie samogo levogo
				q = k;
				left = k->rlink;
                                if (left == NULL)
                                  {
                                    break;
                                  }
				left->llink = NULL;
				l = k = left;
				delete q;
			}
			else if (k == right)
			{ // udalenie samogo pravogo
				q = k;
				right = k->llink;
				right->rlink = NULL;
				k = NULL;
				delete q;
			}
			else
			{ // udalenie iz serediny spiska
				q = k;
				l->rlink = k->rlink;
				k->rlink->llink = l;
				delete q;
				k = l->rlink;
			}
		}
		else // esli ne nado udalyat', to vpered
		{
			l = k;
			k = k->rlink;
		}
	}
	printf("\nSpisok posle udaleniya palindroma: \n");
	printf("\nsleva napravo\n ");
        llist(left);
	printf("\nsprava nalevo\n ");
        rlist(right);
	
	getch();
}
byl by rad, esli kto to podskajet, ili ispravit' owibki...

Последний раз редактировалось Nursi; 06.06.2012 в 23:14.
Nursi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual C++, Visual C#, Visual basic .Net, или Microsoft.Net Что лучше? _PROGRAMM_ Общие вопросы .NET 14 10.10.2012 19:24
Проблема с windows visual styles в Visual studio 2008 express. [awa Visual C++ 2 09.01.2010 06:05
Как перевести проект из Visual C++ 2003 в Visual C++ 2008? iukash Visual C++ 8 17.04.2009 22:36
Visual c++ 2005 и Visual c++ 6 это разные версии или нет? Руслантус Свободное общение 3 30.11.2007 19:42