Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Задачи на графы и строки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Меню http://www.cyberforum.ru/cpp-beginners/thread27303.html
Составить програму которая выводит на екран меню. 1.Первое 2.Второе 3.Трете. И взависимости от вибраного пункта выдаэт одно из сообщений(получите суп,получите картошку,получите кампот,оставайтесь...
C++ Проверить, является ли год високосным 1.Написать програму которая проверяет являєтся год вісокосним 2.составить програму которая выводит на екран меню 1.Первое 2.Второе 3.Трете.И взависимости от вибраного пункта выдает одно из... http://www.cyberforum.ru/cpp-beginners/thread27297.html
C++ Нужен исходник с++(Нахождение корней уравнения методом обратного интерполирования)
Помогите пожалуйста найти данный исходник...
Хранение и обработка данных структурного типа (C++) C++
1. Общие требования к программе При разработке программы применить технологию нисходящего проектирования. Логически законченные фрагменты оформить в виде подпрограмм, которым все необходимые данные...
C++ Диалоговое окно при выходе из программы http://www.cyberforum.ru/cpp-beginners/thread27273.html
Доброго времени суток, уважаемые форумчане! У меня новичковая проблема: как заставить программму вывести диалоговое окно вида : Вы действительно хотите завершить работу? и кнопками да и нет. Проблема...
C++ Сумма делителей данного натурального числа Задание: Написать подпрограмму, которая вычисляет сумму делителей данного натурального числа Добавлено через 1 час 26 минут 24 секунды Program BesT_VII; uses wincrt; var a,i:2..maxlongint;... подробнее

Показать сообщение отдельно
patriarch
0 / 0 / 0
Регистрация: 04.03.2009
Сообщений: 17

Задачи на графы и строки - C++

24.03.2009, 17:24. Просмотров 1764. Ответов 7
Метки (Все метки)

Поомгите пожалуйста с 2 задачами.
1) Формулы и программы.
Задана обратная польская запись (например, "1 2 +" для выражения "1 + 2", "X 3 Y
* +" для "X + 3 * Y", "X 3 + Y *" для "( X + 3 ) * Y") некоторого простого
выражения, не содержащего вхождений идентификаторов. Вычислить значение этого
выражения.
вот мое решение...оно работает но не совсем так как надо...например на выражение
1 1 1 1 1 1 1 1 1 + + + + + + + + оно выдает ошибку...Выделен кусок кода где препод сказал ошибка.Но возможно есть ещё какие-нибудь ошибки помогите пожалуйста.
Код
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void turn (char s[])
{
	int i=strlen(s)-1,j;
	char c;

	for(j=0;j<i/2+1;j++)
	{
		c=s[j];
		s[j]=s[i-j];
		s[i-j]=c;
	}
}

void insert(char s1[],char s2[],int n)
[B]{
	int i,l1=strlen(s1),l2=strlen(s2);

	for(i=l1+n;i>l1-1;i--)
	{
		s1[i]=s1[i-n];
		s1[i-n]=' ';
	}

	for(i=0;i<l2;i++)
		s1[i+n]=s2[i];
}[/B]

int schet(char s[])
{
	int i=0,l=strlen(s),j=0,b=0,res;
	char s1[255],s2[255];
	
	while(((s[i]<'0')||(s[i]>'9')||(s[i]==' '))&&(i<l))
		i++;
	if(i!=l)
		while((s[i]>='0')&&s[i]<='9')
			s1[j++]=s[i++];
	
	s1[i]='\0';
	res=atoi(s1);
	
	while((s[i]!='-')&&(s[i]!='+')&&(s[i]!='*')&&(s[i]!='/')&&(i<l))
		i++;
	if(i!=l)
	{
		j=i-1;
		while(s[j]==' ')
			j--;
		while((s[j]>='0')&&(s[j]<='9')&&(j>-1))
		{
			s1[b++]=s[j];
			s[j--]=' ';
		}
		s1[b]='\0';
		
		b=0;
		while(s[j]==' ')
			j--;
		
		while((s[j]>='0')&&(s[j]<='9')&&(j>-1))
		{
			s2[b++]=s[j];
			s[j--]=' ';
		}
		s2[b]='\0';
	
		turn(s1);
		turn(s2);
		

		if(s[i]=='-')
			res=atoi(s2)-atoi(s1);
		if(s[i]=='+')
			res=atoi(s2)+atoi(s1);
		if(s[i]=='*')
			res=atoi(s2)*atoi(s1);
		if(s[i]=='/')
			res=atoi(s2)/atoi(s1);
		s[i]=' ';

		itoa(res,s1,10);
		insert(s,s1,i);
		res=schet(s);
		return(res);
	}
	return(res);
}

void main()
{
	char str[2048];
	int res=0;

	printf("Vvedite svirajenie\n");

	gets(str);
	res=schet(str);

	printf("%i\n",res);

}
Код
2) Графы и системы дорог.
Для заданного натурального числа n > 4 построить граф (без петель и без кратных
рёбер) с n вершинами, в котором степень каждой вершины равна 4 (Степень вершины
равна числу рёбер, инцидентных ей).
Вот мой код но преподаватель сказал что граф неориентирован и в каждой строке должно быть по 4 единицы и матрица должна быть симметрична...

Код
#include "stdio.h"
int m[100][100];
int size;

void f()
{
	for (int x=0; x<size; x++)
	{
		if (x==0) 
		{
			m[0][size-1]=1;
			m[0][1]=1;
			m[size-2][size-1]=1
		}
		else if (x==size-1)
		{
			m[1][0]=1;
			m[size-1][0]=1;
			m[size-1][size-2]=1;
		}
		else
		{
			m[x][x+1]=1;
			m[x][x-1]=1;
		}
	}
}

void g()
{
	for (int x=0; x<size; x++)
	{
		for (int y=0; y<size; y++) printf("%d ", m[x][y]);
		printf("\n");
	}
}
void main()
{
	scanf("%d", &size);
	if (size<=4)
	{
		printf("Error\n");
	}
	else
	{
		f();
		g();
	}

}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru