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

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

Войти
Регистрация
Восстановить пароль
 
FrozenFox
0 / 0 / 0
Регистрация: 08.11.2011
Сообщений: 7
#1

ошибка в программе(не могу описать в двух словах) - C++

17.11.2011, 03:33. Просмотров 614. Ответов 0
Метки нет (Все метки)

суть проблемы:
запускаем программу,жмем 6, подаем нужные параметры. потом нажимаем 5 и подаем новые параметры. выскакивает ошибка. обратная последовательность приводит к тому же. хотя если за время работы программы использовать только одну функцию - все проходит нормально.
глупость с динамическим выделение памяти там где не надо - попытка избавиться от ошибки.

прошу ответить как можно скорее - утром лабу сдавать, приблизительно через 3 часа. жду ответа, спасибо всем прочитавшим)

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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
#include <string.h>
#include <stdlib.h>
 
#define N 256
 
int StrLen(char *Str);//нахождение длинны
int StrCmp(char *Str1,char *Str2);//сравнение строк
int StrFindPos(char *Str1,char *Str2);//нахождение номера элемента с которого вторая строка встречается в первой
int StrFindEmaunt(char *Str1,char *Str2);//нахождение количества вхождений второй строки в первую
void StrDel(char *Str1,int BeginDel,int EndDel);//удаление  из строки с BeginDel-ого элемента по EndDel-ый.
void StrIns(char *Str1,char *Str2,int Position);//включение второй строки в первую с Position-ого элемента
void Menu(int i); //попытка справится с ошибкой, которая возникает благодаря тому что старые значения элементов не очщаются ='(
 
 
void main()
{
    int i;
    while(1)
    {
        printf("1.int StrLen(char *Str);\n2.int StrCmp(char *Str1,char *Str2);\n3.int StrFindPos(char *Str1,char *Str2);\n4.int StrFindEmaunt(char *Str1,char *Str2);\n5.void StrDel(char *Str1,int BeginDel,int EndDel);\n6.void StrIns(char *Str1,char *Str2,int Position);\n");
        i=getch();
        i-=48;
        system("cls");
        Menu(i);
        getch();
        system("cls");
    }
 
}
void Menu(int i)
{
    int j,k;
    char *Str1,*Str2;
    Str1=(char*)malloc(N*sizeof(char));
    Str2=(char*)malloc(N*sizeof(char));
    switch(i)
    {
        case 1:
            gets(Str1);
            printf("return: %i",StrLen(Str1));
            break;
        case 2:
            gets(Str1);
            gets(Str2);
            printf("return: %i",StrCmp(Str1,Str2));
            break;
        case 3:
            gets(Str1);
            gets(Str2);
            printf("return: %i",StrFindPos(Str1,Str2));
            break;
        case 4:
            gets(Str1);
            gets(Str2);
            printf("return: %i",StrFindEmaunt(Str1,Str2));
            break;
        case 5:
            gets(Str1);
            scanf("%i%i",&j,&k);
            StrDel(Str1,j,k);
            puts("result string: ");
            puts(Str1);
            break;
        case 6:
            gets(Str1);
            gets(Str2);
            scanf("%i",&j);
            StrIns(Str1,Str2,j);
            puts("result string: ");
            puts(Str1);
            break;
        case -21:
            return;
    }
    free(Str1);
    free(Str2);
}
int StrLen(char *Str)
{
    int i=0;
    while(*Str)
    {
        ++Str;
        ++i;
    }
    return i;
}
int StrCmp(char *Str1,char *Str2)
{
    while(*Str1==*Str2 && *Str1 && *Str2)
    {
        ++Str1;
        ++Str2;
    }
    if(*Str1>*Str2)return 1;
    else if(*Str1<*Str2)return -1;
    else return 0;
}
int StrFindPos(char *Str1,char *Str2)
{
    int i=0,j=0;
    char *dStr2=Str2;
    while(*Str1)
    {
        if(*dStr2==*Str1)
        {
            i=j;
            while(*dStr2==*Str1)
            {
                ++dStr2;
                ++Str1;
            }
            if(*dStr2==0)return i;
            else dStr2=Str2;
        }
        ++j;
        ++Str1;
    }
    return -1;
}
int StrFindEmaunt(char *Str1,char *Str2)
{
    int Emaunt=0,CtrlEmaunt;
    char *dStr2=Str2;
    while(*Str1)
    {
        CtrlEmaunt=Emaunt;
        if(*dStr2==*Str1)
        {
            while(*dStr2==*Str1)
            {
                if(!(*Str1))break;
                ++dStr2;
                ++Str1;
            }
            if(*dStr2==0)++Emaunt;
            dStr2=Str2;
        }
        if(Emaunt==CtrlEmaunt)++Str1;
        else CtrlEmaunt=Emaunt;
    }
    return Emaunt;
}
void StrDel(char *Str1,int BeginDel,int EndDel)
{
    char *BD=&Str1[BeginDel],*ED=&Str1[EndDel+1];
    while(*ED)
    {
        *BD++=*ED++;
    }
    *BD=0;
}
void StrIns(char *Str1,char *Str2,int Position)
{
    char Box[N],*Runner=Box,*RunnerStr1=&Str1[Position];
    while(*RunnerStr1)
        *Runner++=*RunnerStr1++;
    *Runner=0;
    RunnerStr1=&Str1[Position];
    Runner=Str2;
    while(*Runner)
        *RunnerStr1++=*Runner++;
    Runner=Box;
    while(*Runner)
        *RunnerStr1++=*Runner++;
    *RunnerStr1=0;
}
Добавлено через 32 минуты
решил не выпендриваться и бесконечный цикл внутри мейн убрал, лабу сдам, но вопрос остается открытым =)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 03:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ошибка в программе(не могу описать в двух словах) (C++):

Не могу не как описать не которые строки в программе - C++
что обозначаеться prn_matrix int last_min

Ошибка в программе (Описать структуру с именем NOTE) - C++
Описать структуру с именем NOTE, содержащую следующие поля: - фамилия, имя; - номер телефона; - дата рождения Написать...

Ошибка в программе, не могу найти где - C++
Доброго времени суток. Задание для программы: &quot;Задается размер массива, который заполняется случайными числами и находится сумма всех...

Не могу понять где ошибка в программе - C++
Здравствуйте, вот написал программу которая должна удалять первые буквы в каждом слове, но в итоге получается что в первом слове все буквы...

Вывести все глухие согласные (без повторений), которые встретились в двух самых коротких словах - C++
Помогите или хотя бы натолкните на мысль чайника в программировании, пожалуйста! Итак, дана следующая задача: Дан массив из n слов...

Описать каждый шаг в программе - C++
Помогите описать каждый шаг в программе: #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; using...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 03:33
Привет! Вот еще темы с ответами:

В двух словах не описать - Ноутбуки
Начну с того, что купил ноутбук примерно 8 месяцев назад. ASUS x550lnv-xo226h, естественно сразу же взял подставку с кулером. Проблемы...

Кто нибудь сможет в двух словах описать представленные в WSUS продукты Windows 10? - Windows 10
Добрый день. Кто нибудь сможет в двух словах описать представленные в WSUS продукты Windows 10? Спасибо заранее

в программе ошибка,найти не могу - C++ Builder
#include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;complex.h&gt; #include&lt;stdlib.h&gt; #include&lt;graphics.h&gt; #define K 7 #define M 50 ...

Ошибка в программе.Не могу понять где - Java SE
Создать класс «Самолет», содержащий следующие закрытые поля: • Название пункта назначения; • Шестизначный номер рейса; • Время...


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

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

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