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

ошибка в функции подскажите как исправить - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определение матрицы смежности графа по заданной матрице инцидентности http://www.cyberforum.ru/cpp-beginners/thread377562.html
Доброй ночи :) Изучаю графы, написал фукнцию для конвертации матрицы инцидентности в матрицу смежности, а наоборот не выходит. Слева на рисунке матрицы инцидентности, с неё получаю матрицу смежности. А обратно ерунду выдает... Подскажите идею, пожалуйста .
C++ Unicod Доброго времени суток. Подскажите кто знает достойный материал(возможно книги) по использованию юникода в срр приложениях. Об LPWSTR WCHAR и тд. С юникодам ранее практически не работал, а найти полной и исчерпывающей информации так и не получилось, в книгах которые изучал применялся acsi. Со string, *char уж давно разобрался, а тут начал изучать винапи (по Петзольдсу) и все бы хорошо, да... http://www.cyberforum.ru/cpp-beginners/thread377531.html
C++ Найти все натуральные числа, не превышающие заданного N, которые делятся на каждую из своих цифр.
Найти все натуральные числа, не превышающие заданного N, которые делятся на каждую из своих цифр. Надо решить через функцию .Без массивов.
Просьба в компиляции C++
Приветствую. Я в С полный ноль (даже меньше), делаю проект на дельфи. Нашел инфу по RSA-шифрованию, но как обычно есть проблемы. Вроде и тема про связку дельфи и опенссл, но пример почему то на C++. Есть пример проги, но ставить С++ для компиляции как то смысла нет, вдруг там ошибки в коде какие нить. Вот здесь есть код, скомпильте, плиз, кому не влом и отправьте мне на мыльце плиз. Хочется...
C++ Помагите довести исходник до ума http://www.cyberforum.ru/cpp-beginners/thread377488.html
Здраствуйте дорогой форум! я новичек в этом деле , нашел исходник на c++ для игры warcraft maphack и не могу его откомпилировать Прошу вас пожалуйста помогите мне , да бы этот исходник заработал:cry: #include <windows.h> #include <winbase.h> int main() {
C++ Написать программу вычисления значений заданных арифметических выражений Содержание задания. Написать программу вычисления значений заданных арифметических выражений. Набор выражений и значения исходных данных определяются вариантами заданий, соответствующих порядковому номеру студента в списке журнала группы. . где x = 47.8; y = -5.5; n = -2.3; v= 0.8. а=(х+(у/(5+кореньХ)) / ((модуль)+кореньХ) ; в=(е(в степени n-1)) + (arctg(v)/(n+2)) подробнее

Показать сообщение отдельно
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
05.11.2011, 17:42  [ТС]     ошибка в функции подскажите как исправить
напишите плиз я своим умом это явно не сооброжу ....

Добавлено через 1 минуту
может вы имеели такую функцию ввиду
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//получить адрес
sp* pind(sp *list){
    sp *prt = list;
    int i=1,j=0;
    cout<<Rus("Введите номер")<<endl;
    cin>>j; //номер строки
    while (prt != NULL){
        if(i==j){
            return prt; //строка под этим номером
            break;
        }
        prt=prt->next;
        i++;
    } }
Добавлено через 16 минут
вот весь листинг моей контрольной
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
# include <iostream>              // класс для работы с вводом-выводом
# include <windows.h>             // для функции    CharToOem();
# include <fstream>           // класс для работы с файлом
 
using namespace std;
    char bufRus[256];
    char* Rus(const char* text)
    {
        CharToOem(text, bufRus);
    return bufRus;
    }
 
struct lfile{
    char name[15];
    char data[10];
    int upd;
};
struct sp{
    lfile elfile;   // поле данных
    sp *next;   // указатель
};
 
sp*print_list(sp *list);//прототип функции вывод на экран
 
 
sp* ft_enter();//прототип функции ввод из текстового файла
 
sp* fs_enter();// прототип функции ввод с экрана
sp* sort(sp *list);// прототип сортировки
void search(sp *list); // прототип функций поиск по имени и вывод в файл
void fsearch(sp *list); //прототип функции поиск файла с наибольшим количеством обращений
 //
sp* pind(sp *list); //прототип получения адреса
sp* del(sp *list,sp *adr);// прототип функции удаления файла
sp * vst(sp *list,sp *adr);// прототип фунции вставка файла
void zmn(sp *list); // прототип функции замена файла
 
void main()
{
   int v;
   sp *k;
   do{
      cout<<Rus("  1: формирование списка из текстового файла")<<endl;
      cout<<Rus("  2: формирование списка с экрана")<<endl;
      cout<<Rus("  3: поиск по заданному полю с сохранением результатов в файле")<<endl;
      cout<<Rus("  4: выборка файла с наибольшим количеством обращений")<<endl;
      cout<<Rus("  5: замена записи")<<endl;
      cout<<Rus("  6: удаление записи после указанного адреса")<<endl;
      cout<<Rus("  7: вставка записи после указанного адреса")<<endl;
      cout<<Rus("  8: вывод списка")<<endl;
      cout<<Rus("  9: выход")<<endl;
      cout<<Rus("вариант ")<<endl;
      cin>>v;
      switch(v){
        case 1: k = ft_enter(); break;/*вызов функции ввод тектового файла в переменную к, чтоб по ней потом можно было делать сортировку, поиск и тд*/
        case 2: k = fs_enter(); break;// вызов функции ввод с экрана
        case 3: search(k);break;//вызов функции поиск по переменной к и сохранение в файл одной строки
        case 4: fsearch(k); break;//вызов функции поиск файла с наибольшим количеством обращений к нему
        case 5: zmn(k); print_list(k); break;//вызов функции замена строки по указаному номеру
        case 6: k = del(k,pind(k)); print_list(k); break;// вызов функции удаление строки после указанного номера
        case 7: k = vst(k,pind(k)); print_list(k); break;//вызов функции вставка строки после указанного номера
        case 8: print_list(k);break;//вызов функции вывод списка на экран
        case 9:return; break;
 
        }
    } while(true);//цикл будет повтрятся
}
 
//ввод списка из текстового файла
sp* ft_enter(){
    char name[10];// символьный тип которое будет именем файла и его типом не больше 10знаков
    cout<<Rus("введи имя входн тип.файла")<<endl;
    cin>>name;// ввод имени и типа
    sp* list = new sp;    //создаем указатель на голову списка
    sp *ptr;  //указатель на элемент списка
    bool on=true; //флажок, который определяет, читаем ли мы первый элемент списка или последующие
    ifstream inf(name);//считывание файла по имени name в inf
    while (!inf.eof()){ // цикл пока не будет достигнут конец файла
        if(on){     //если до этого список был пуст, то
            ptr=list;  //записываем в него первый элемент
            on=false;
        }else{  //если список не пуст, то записываем в него текущий элемент (настраиваем указатель на след. элемент)
            ptr->next=new sp; //выделяем память под следующий элемент списка
            ptr=ptr->next;//ptr теперь указывает на тот элемент который был выделен строкой выше
        }
        inf>> ptr->elfile.name;   //читаем конкретные данные в текущий элемент списка
        inf>> ptr->elfile.data;
        inf>> ptr->elfile.upd;
        inf.ignore();
    }
    ptr->next=NULL; //для последнего элемента списка указатель на следующий элемент не определен/пуст (установлен в NULL)
    inf.close();//закрытие файла
    return list;  //  возвращаем указатель на первый элемент списка
}
 
 
//ввод списка с экрана
sp *fs_enter()
{
        sp *list, *ptr;
        char name;
 
        cout << Rus("Введиде имя, дату создания, кольчество обращений к файлу") << endl;
        list = ptr = new sp;
        name = 'y';
        while (name == 'y'){
            cin >> ptr->elfile.name;
            cin >> ptr->elfile.data;
            cin >> ptr->elfile.upd;
            cin.get();
            ptr->next=NULL;
 
            cout << Rus("ещё (y/n)") << endl;
            cin >> name;
            cin.get();
            if (name == 'y') {
                ptr->next = new sp;
                ptr = ptr->next;
            }
        }
        return list;
}
 
//Функция вывода списка на экран, как параметр берёт указатель на список.
sp* print_list(sp *list){
    sp *prt = list;
    int i=0;
    do {
        cout<<++i<<"  ";// первый файл
        cout<<prt->elfile.name<<"      ";
        cout<<prt->elfile.data<<"      ";
        cout<<prt->elfile.upd<<endl;
        prt=prt->next;//следующий
 
    } while (prt!=0);
}
 
 
 
//поиск файла по имени и вывод его в текстовый файл
void search(sp *list){
    sp *prt = list;
    char f[15],r[15];
    cout<<Rus("введите текст")<<endl;
    cin>>f;
    cout<<Rus("введите выходной файл")<<endl;
    cin>>r;
    ofstream inf(r);
    while (prt!=NULL){
        if(strstr(prt->elfile.name,f)){ // сравнивает имя файла введенное с теми что в списке, если совпадает то выводит о нем всю информацию в другой файл
          inf<<prt->elfile.name<<"  ";
          inf<<prt->elfile.data<<"  ";
          inf<<prt->elfile.upd<<endl;
          prt=NULL;
        } else{
        prt=prt->next;}//переход на другую строку
    }
}
 
//Файл с наибольшим кольчеством обращений
void fsearch(sp *list){
     sp *prt = list;
     int p=-1;
     sp *r;
     while (prt != NULL){
        if(prt->elfile.upd > p){//если первое обращение больше другого
            p = prt->elfile.upd; // присвоить его значение в р
            r = prt; //запомнить максимум
 
        prt=prt->next;
        }
        else
     {
     cout<<Rus("Файл с наиольшим кольчеством обращений")<<endl;
     cout<<r->elfile.name<<" ";
     cout<<r->elfile.data<<" ";
     cout<<r->elfile.upd<<endl;
     }} prt=NULL;
}
 
//получить адрес
sp* pind(sp *list){
    sp *prt = list;
    int i=1,j=0;
    cout<<Rus("Введите номер")<<endl;
    cin>>j; //номер строки
    while (prt != NULL){
        if(i==j){
            return prt; //строка под этим номером
            break;
        }
        prt=prt->next;
        i++;
    } }
 
 
//удаление элемента с адресом adr
sp* del(sp *list,sp *adr){
    sp *pt=list, *q;
    if(adr==list){// если номер совпал то...
        q=adr->next;
        pt=q;
        q=adr->next;//
 
    }else{
        q = adr;
        adr=adr->next;
     }
    delete(q); //удаляет строку после указанного номера
    return pt;
}
 
//вставка нового элемента после элемента с адресом adr
sp * vst(sp *list,sp *adr){
    lfile rab;
    sp *pt=list,*q=new sp;
    cout<<"name=";
    cin>>rab.name;
    cout<<"data=";
    cin>>rab.data;
    cout<<"up=";
    cin>>rab.upd;
    q->elfile=rab;// в список на который ссылался q присваиваем строки rab
    if(adr==list){
        pt=q;
        pt->next=adr;
    }else{
        q->next= adr->next;
        adr->next=q;
    }
    return pt;
}
 
//заменить поле
void zmn(sp *list){
    sp *prt = list;
    int i=1,j=0;
    cout<<Rus("Введите номер")<<endl;
    cin>>j; // номер поля которое заминить
    while (prt != NULL){
        if(i==j){// если номер есть тоесть равен то..
        cout << Rus (" Введите имя нового файла");
    cin>>prt->elfile.name;
    cout << Rus (" Введите дату создания файла");
    cin>>prt->elfile.data;
    cout << Rus (" Введите количество обращений к файлу");
    cin>>prt->elfile.upd;
            break;
        }
        prt=prt->next;
 
        i++;
    }
}
Добавлено через 2 минуты
корректно не работает две функции это вставки и удаления... уже не знаю как исправить... переставлял по разному внутри функций все... но вставке все работает как надо только в одно случае работает не так когда ввожу допустим адрес один то он вставляет новый элемент не после первого а перед собой, в других случаях когда ввожу 2 или 3 или 4 то после вставляет вот как исправить не знаю(((
 
Текущее время: 08:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru