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

Задачи на графы и строки - 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. Просмотров 1831. Ответов 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 + + + + + + + + оно выдает ошибку...Выделен кусок кода где препод сказал ошибка.Но возможно есть ещё какие-нибудь ошибки помогите пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#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)
{
    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];
}
 
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 единицы и матрица должна быть симметрична...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#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 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru