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

Ошибки в выполнении программы при динамическом создании структуры - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Генератор текста http://www.cyberforum.ru/cpp-beginners/thread868952.html
Добрый день. Вот начинаю осваиваться с C++, но абсолютно не владею функциями рандома. Может кто-нибудь если не сложно уделить 5-7 минут своего времени и накидать эскиз программы-генератора текста. Я имею ввиду будут даны допустим 100 предложений, и нужно чтобы программа из этих 100 предложений выбирала 5-7 рандомных и из них делала текст, но без повторений предложений. будьте добры подкиньте...
C++ Преобразование пользовательских классов у меня есть два класса: class Int; class Compl { float real; float image; public: http://www.cyberforum.ru/cpp-beginners/thread868943.html
C++ Количество вхождений в тексте каждой буквы
Составить программу, которая бы для каждой буквы заданного текста указывала, сколько раз она встречается в тексте. и если можно с комментариями. СПАСИБО ЗА ПОМОЩЬ
Какие опции нужно выставить в Dev-C++, чтобы получить минимальный выходной файл? C++
Какие опции нужно выставить в сабже, чтобы получить минимальный выходной файл? Проект на Дельфи с использованием WinAPI имеет размер 22 Кб, тот же проект на сабже не удаётся получить меньше 60 Кб. Используется профайл MingW gcc.
C++ Объект класса прямоугольник с помощью псевдографических символов http://www.cyberforum.ru/cpp-beginners/thread868924.html
здаров братва,вообщем такое задание Для классов: class Point {int x,y; public: Point (int a, int b) {x=a; y=b; }; ….. }; class Rect {Point lt, rb; public: Rect (Point a, Point b):lt(a), rb(b){ };
C++ delete[] статической памяти 1. Должна ли возникать ошибка (или падение программы) при применении delete к статической памяти? У меня (Microsoft Visual Studio 2005) никаких ошибок не возникает. Но, просто, сталкивался с тем, что на некой 64-х разрядной машине (Windows), при запуске моей 32-х разрядной программы (то есть в эмуляторе) она вылетала в месте где используется delete к статической переменной. А также встречал в... подробнее

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

Ошибки в выполнении программы при динамическом создании структуры - C++

18.05.2013, 09:51. Просмотров 332. Ответов 3
Метки (Все метки)

Всем привет!
В с++ не силен, только постигаю азы.
Имеется задание (во вложении).
Смахивает на самописный SVN.
При выполнении, выбирая 2й пункт (добавить данные), первый проход работает, данные добавляются и просматриваются.
Если же второй раз попытаться добавить, то программа как бы проскакивает через строчку
C++
1
2
    printf("Введите ключ:");
    scanf_s("%d",&temp_item.key);
и выполняется сама далее, зацикливаясь. Проблема, по-моему в указателях и temp_item, но как правильно будет, не понимаю.

Код. ms vs 2010 c++
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
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <conio.h>
 
using namespace std;
 
typedef struct Item{    // тип - элемент таблицы;
    int index;
    int key;
    int release;
    char *info;
    Item *next;//
 
} Item;
 
int const rows_count = 10;
 
    vector<Item> items;
    int index = 0;
 
int check_release(int key)
{
    /*
    функция служит для присвоения каждый раз новой версии релиза
    в отдельно взятой ветке 
    */
    int max = key;
    if (items.size() > 0)
    {
    for (vector<Item>::iterator i = items.begin(); i != items.end(); ++i)
        if (i->key = key)
            if (max < i->release)
                max = i->release;
    } else max +=1;
 
return max;
}
 
int add(void)
{
//создаем временную "строку"
    Item temp_item;
 
    temp_item.index = items.size()+1;
    temp_item.key = 0;
    temp_item.release = 0;
    temp_item.info;// = "sss";
    
    printf("Введите ключ:");
    scanf_s("%d",&temp_item.key);
    
    printf("Версия ставится автоматически по ключу: %d", temp_item.key,"\n");
    int temp_key = temp_item.key;
 
    temp_item.release = check_release(temp_key);
    
    printf("\nПоставленная версия: %d", temp_item.release, "\n");
 
    //if (temp_item.info == "0")
    //{
        printf("\nВведите информацию (пустая не катит :-)): ");
        scanf_s("%d",temp_item.info);
    //}
    
    items.push_back(temp_item);//заносим в вектор заполненную структуру
//как понимаю, здесь должно быть освобождение памяти.
 
    return 0;
}
 
int search_versions(int key)
{
    return 0;
}
 
int optimize_table(void)
{
    return 0;
}
 
int display(void)
{
    printf("+---+-------------+-------------|-------------------------------------------+\n");
    printf("| № |     key     |   release   |                  info                     |\n");
    printf("|---|-------------|-------------|-------------------------------------------+\n");
    
    for (vector<Item>::iterator i = items.begin(); i != items.end(); ++i)
    {
        printf("| %d",i->index);
        printf("| %d",i->key);
        printf("| %d",i->release);
        printf("| %s", &i->info); 
        printf("|\n");
    }
    return 0;
}
 
 
void del(int index)
{
    for (int i = index; i < rows_count; ++i)
        items[i] = items[i + 1];
}
 
int menu(void)
{
    char menu_key;
    bool enabled = true;
 
    while (enabled){
    //for (int i=1; i<10; i++){
        printf("\nГлавное меню:\n");
        printf("Для просмотра таблицы нажмите - 1\n");
        printf("Для добавления записи в таблицу нажмите - 2\n");
        printf("Чтобы оптимизировать таблицу, удалив старые версии записей - нажмите - 3\n");
        printf("Чтобы выполнить поиск по ключу, нажмите - 4\n");
        printf("Чтобы выполнить удаление по ключу, нажмите - 5\n");
        printf("Для выхода нажмите - ESC\n");
    switch (menu_key = _getch())
    {
    case '1':
        printf("Просмотр таблицы...\n");
        display();
        break;
    case '2':
        printf("Добавить данные...\n");
        add();
        break;
    case '3':
        printf("Оптимизировать таблицу...\n");
        //optimize
        break;
    case '4':
        printf("Удалить данные по ключу...\n");
        //del
        //index - нужный индекс
        scanf_s("%d",&index);
        del(index);
        break;
    case '5':
        //search
        break;
    case 27:
            enabled = false;
            cout<<"Закрытие программы...\n";
            break;
    default:
        printf("\nВыберите пункт меню от 1 до 5\n");
        break;
 
    }
 
    }
    return 0;
}
 
int _tmain(void)
{
    printf("o_O\n");
    setlocale( LC_ALL,"Russian" );
    
    menu();
 
    //scanf_s("%d",&menu_key);
    
    //menu(menu_key);
 
    system("pause");
    return 0;
}
Миниатюры
Ошибки в выполнении программы при динамическом создании структуры  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru