С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
patriarch
0 / 0 / 0
Регистрация: 04.03.2009
Сообщений: 17
#1

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

24.03.2009, 17:24. Просмотров 1802. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2009, 17:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задачи на графы и строки (C++):

Задачи на графы - C++
Напишите плз список интересных и популярных задач на графы. Ну или ссылку.

задачи на строки в C++ - C++
Всем привет, помогите решить несколько задачек со строками с++ 1. Дана строка вывести ее 3 раза через запятую и показать количество...

Задачи на строки - C++
Помогите пожалуйста написать следующие задачи: 1. Дана строка сиволов. Преобразовать строку, удалив из нее все символы, не являющимися...

Прокоминтируйте строки задачи - C++
Всем привет, я тут пытаюсь освоить классы, у книге которой я пользуюсь приведен пример, но я его не совсем понимаю, пркоминтируйте все...

Задачи на строки не умею реализовывать - C++
вообще со строками беда, не умею реализовывать и всё Каждая задача на них - 3 часа убитого времени, а результат - неработающий...

Задача на строки и задачи на создание рекурсивной функции - C++
Добрый день, а может быть и вечер. Возникла проблема с решением задачи. Условие:Дан текст, содержащий целые числа. Вывести на экран...

7
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
24.03.2009, 17:47 #2
Код
void insert(char s1[],char s2[],int n)
что делает функция ?
0
patriarch
0 / 0 / 0
Регистрация: 04.03.2009
Сообщений: 17
24.03.2009, 17:55  [ТС] #3
Цитата Сообщение от accept Посмотреть сообщение
Код
void insert(char s1[],char s2[],int n)
что делает функция ?
Ну вообще по замыслу вставляет одну строку в другую начиная с п-го символа
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
24.03.2009, 19:48 #4
Код
    for (i = l1+l2; i >= l1; i--)
        s1[i] = s1[i-l2];
Код
    for (i = 0; i < l2; i++)
        s1[i+n] = s2[i];
0
patriarch
0 / 0 / 0
Регистрация: 04.03.2009
Сообщений: 17
24.03.2009, 20:16  [ТС] #5
accept,
то есть вся функция будет выглядеть так?
Код
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;
	}
}
у меня и так он эти выражения не считает
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
25.03.2009, 01:12 #6
C
1
2
3
4
5
6
7
8
9
10
11
/* insert:  вставляет в строку s1 строку s2,
            начиная с позиции n, где n = 1,2,3... */
void insert(char s1[], const char *s2, int n)
{
    int i, l1 = strlen(s1), l2 = strlen(s2);
 
    for (i = l1+l2; i > l1; i--)
        s1[i] = s1[i-l2];
    for (i = 0; i < l2; i++)
        s1[i+n-1] = s2[i];
}
1
Вложения
Тип файла: zip insert_n_index.zip (532 байт, 19 просмотров)
patriarch
0 / 0 / 0
Регистрация: 04.03.2009
Сообщений: 17
25.03.2009, 20:29  [ТС] #7
спасибо,конечно но это тоже не работает...возможно ошибка не в той функции?или не только в ней...
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
25.03.2009, 21:44 #8
заменил itoa, так как её нет в стандарте
1
Вложения
Тип файла: zip calc.zip (856 байт, 28 просмотров)
25.03.2009, 21:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2009, 21:44
Привет! Вот еще темы с ответами:

Составление алгоритма с пояснениями к решению олимпиадной задачи (графы) - Pascal
Здравствуйте всем! У меня есть к вам просьба, так как я хочу понять алгоритм этой задачи. Сам пытался, но что-то не получается у самого. ...

Нужны задачи на тему "Связные графы". - Дискретная математика
Здравствуйте. Я пишу курсовую по теории графов на тему Связные графы. Мне нужны задачи на эту тему. Поискав в инете, ничего дельного не...

Задачи на строки - C#
Помогите с решением хотя бы одной задачи 3. Вывести текст, составленный из последних букв всех слов. 3. Посчитать количество слов,...

задачи по с++ на строки - Visual C++
1.Из слова вирус путем замены его букв получить слово фокус. 2.из слова &quot;трос&quot; путем вырезок и склеек его букв получить слова...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.