Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2013, 10:55   #1
Hy6
Новичок
Джуниор
 
Регистрация: 16.10.2009
Сообщений: 2
По умолчанию Ошибки в выполнении программы при динамическом создании структуры

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

Код. ms vs 2010 c++
PHP код:
// variant16.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <conio.h>

//#include "Item.h"

using namespace std;

typedef struct Item{    // тип - элемент таблицы;
    
int index;
    
int key;
    
int release;
    
char *info;
    
Item *next;

Item;

int const rows_count 10;

    
vector<Itemitems;
    
int index 0;

int check_release(int key)
{
    
/*
    функция служит для присвоения каждый раз новой версии релиза
    в отдельно взятой ветке 

    */
    
int max key;
    if (
items.size() > 0)
    {
    for (
vector<Item>::iterator i items.begin(); != 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(); != items.end(); ++i)
    {
        
printf("| %d",i->index);
        
printf("| %d",i->key);
        
printf("| %d",i->release);
        
printf("| %s", &i->info); 
        
printf("|\n");
        
//cout << "|",i->index,"|",i->key, "|",i->release, "|", i->info, "|\n";
    
}
    return 
0;
}


void del(int index)
{
    for (
int i indexrows_count; ++i)
        
items[i] = items[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("Hello, World!\n");
    
setlocaleLC_ALL,"Russian" );
    
    
menu();

    
//scanf_s("%d",&menu_key);
    
    //menu(menu_key);

    
system("pause");
    return 
0;

Изображения
Тип файла: jpg bzacwFABUrI.jpg (99.3 Кб, 148 просмотров)

Последний раз редактировалось Hy6; 18.05.2013 в 11:06.
Hy6 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка событий при динамическом создании Veronikaa Компоненты Delphi 4 10.05.2012 17:13
Глюк при динамическом создании Label. BingoBongo Общие вопросы Delphi 2 10.05.2011 19:41
Ошибки при выполнении программы grustniy Общие вопросы Delphi 2 04.09.2010 07:19
Mootools.Проблема определения события OnClick элемента списка при его динамическом создании. ilusha JavaScript, Ajax 2 25.02.2009 10:43