Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Visual C++] Как сделать динамическую структуру? 
:(
    Опции темы
Aaron
Дата 31.10.2006, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



Код

#include "stdafx.h"
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>

struct addr
    {
        char name[100][20];
        char numb[100][20];
        char book[100][20];
        char date[100][20];
    }addr;

int i;

void menu();

void add()
{
    system("cls");
    cout<<"„®¡ ¢«¥­¨¥ ­®¢®© § ¯¨á¨"<<endl<<endl;

    cout<<"‚¢¥¤¨â¥ ”ˆŽ: ";
    cin>>addr.name[i];

    cout<<"‚¢¥¤¨â¥ ­®¬¥à ç¨â â¥«ì᪮£® ¡¨«¥â : ";
    cin>>addr.numb[i];

    cout<<"‚¢¥¤¨â¥ ­ §¢ ­¨¥ ª­¨£¨: ";
    cin>>addr.book[i];

    cout<<"‚¢¥¤¨â¥ áப ¢®§¢à â : ";
    cin>>addr.date[i];
    i++;
    
    
    cout<<endl<<"‡ ¯¨áì ¤®¡ ¢«¥­ ."<<endl;
    getch();
    menu();
}

void view()
{
    int m;

    system("cls");

    for(m=0; m!=i; m++)
    {
        cout<<addr.name[m]<<" "<<addr.numb[m]<<" "<<addr.book[m]<<" "<<addr.date[m]<<endl;
    }

    getch();
}

void about()
{
    cout<<""

    getch();
}

void menu()
{
    system("cls");

    cout<<"Œ¥­î (¢¢¥¤¨â¥ ­®¬¥à ¤¥©á⢨ï)"<<endl<<endl;
    cout<<"1. „®¡ ¢«¥­¨¥ ­®¢®© § ¯¨á¨"<<endl;
    cout<<"2. �¥¤ ªâ¨à®¢ ­¨¥ § ¯¨á¨"<<endl;
    cout<<"3. “¤ «¥­¨¥ § ¯¨á¨"<<endl;
    cout<<"4. ‚뢮¤ ¢á¥å § ¯¨á¥©"<<endl;
    cout<<"5. “¤ «¥­¨¥ ¢á¥å § ¯¨á¥©"<<endl;
    cout<<"6. �®¨áª § ¯¨á¨"<<endl;
    cout<<"7. �®¨áª § ¯¨á¥© á  ªâã «ì­®© ¤ â®© ¢®§¢à â "<<endl;
    cout<<"8. �®¨áª § ¯¨á¥© á ¯à®áà®ç¥­­®© ¤ â®© ¢®§¢à â "<<endl;
    cout<<"9. Ž ¯à®£à ¬¬¥"<<endl;


    switch(getch())
    {
        case'1': add(); break;
        //case'2': add(); break;
        //case'3': add(); break;
        case'4': view(); break;
        //case'5': add(); break;
        //case'6': add(); break;
        //case'7': add(); break;
        //case'8': add(); break;
        case'9': about(); break;

        default: menu(); break;
    }
}

int main(int argc, char* argv[])

{
    menu();
    return 0;
}


структура статичная, плз, как динамическую сделать? ;)


M
alexeis1
Модератор: Не забываем указывать язык в заголовке темы.


Это сообщение отредактировал(а) alexeis1 - 31.10.2006, 17:45
PM MAIL ICQ   Вверх
sidslog
Дата 31.10.2006, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.10.2006
Где: Москва

Репутация: нет
Всего: нет



Код

struct addr
    {
        char** name;
        char** numb;
        char** book;
        char** date;
    }addr;



Выделять память:
Код

name = new char*[n];
for(int i=0;i<n;i++)
       name[i]=new char[m];


где n -  количество слов, m - длина слова
PM MAIL ICQ GTalk   Вверх
Aaron
Дата 31.10.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



Извини, можно чуть подробнее, куда код для каждой переменной ставить? Просто голова уже совсем к ночи не варит...
PM MAIL ICQ   Вверх
Damarus
Дата 31.10.2006, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 7
Всего: 29



Цитата(Aaron @  31.10.2006,  17:03 Найти цитируемый пост)
структура статичная, плз, как динамическую сделать? ;)

Используй STL.
PM MAIL ICQ Jabber   Вверх
Aaron
Дата 31.10.2006, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



Я конечно, извиняюсь, но я в такие дебри еще не лез))
Мне б с выделением памяти разобраться.....не подскажешь?
PM MAIL ICQ   Вверх
Kuvaldis
Дата 31.10.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 32
Всего: 61



Aaron, 
Цитата

Мне б с выделением памяти разобраться...

У тебя было объявление
Код

char name[100][20];

Те. задавалась матрица из 100 строк и 20 столбцов
Заменим данное объявление таким:
Код

char*name[100];

мы объявлили массив из 100 элементов. Элементы - указатели на строки.Пустые указатели. Т.е. первоначально данные и память не выделяются. Это нужно делать явно.Строка - это символьный массив, завершаюшийся символом '\0' (нуль-терминатор)
В данном случае жестко задано количество имен - 100
Для выделения памяти для каждого имени необходимо сделать следующую операцию
Код

for (int i = 0; i < 100; i++)
{
     cout << "Input str len" << endl;
     cin >> len;
     name[i] = new char [len];   // можно и не 20 , если вводить в цикле размерность 
}

т.е. существует возможность создавать непрямоугольные матрицы, а переменной длины

Избавимся от недостатка ограниченности количества имен.
У нас было 
Код

char*name[100];

Сделаем так
Код

char**name;

Получился указатель на указатель.
Если теперь выделить память для указателя name размером в 40 единиц
Код

name new char* [40];
 
то получится массив указателей на 40 элементов, который теперь можно использовать, как я показал раньше.
Здесь следует еще раз обратить внимание, что в С имя массива является указателем на его первый элемент.
После выделения памяти для указателя mas можно обращаться к его элемнтам как обычно, по иддексу%
mas[i].
Остается выделить память для строк. (см. выше)
еще раз,Смысл ввода указателя на указатель в том, что заранее не ограничивается не только размер имени, но и само их количество

Постарался объяснить как можно проще. Если что, обращайся 


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Rockie
Дата 31.10.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31



Aaron, ptr_s - указатель на структуру, память для него  выделяется с помощью  new, очищается delete
Код
#include<iostream>

using namespace std;

struct some_struct{
 int some_value;
};

int main(){

 some_struct s;           // экземляр структуры на стеке
 s.some_value = 5;       // прямой доступ

 some_struct * ptr_s = new some_struct;  // экземляр структуры в куче
 ptr_s->some_value = 10;  // косвенный доступ

 cout<<s.some_value<<'\n'<< ptr_s->some_value<<'\n';

 delete ptr_s;             // очищаем память

 cin.get();
 return 0;
}


добавлено:
динамический массив структур создается похоже, только очищается delete []:
Код
#include<iostream>

using namespace std;

struct some_struct{
 int some_value;
};

int main(){

 int size = 2;
 some_struct * ptr_s = new some_struct[size];

 for(int i=0;i<size;i++)       // initialize struct array
  { cout<<"Enter value ";
    cin>>ptr_s[i].some_value;
  }

 for(int i=0;i<size;i++)      // display struct array
   cout<<ptr_s[i].some_value<<'\n';

 delete [] ptr_s;

 system("pause");
 return 0;
}


Это сообщение отредактировал(а) Rockie - 31.10.2006, 21:31


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Damarus
Дата 31.10.2006, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 7
Всего: 29



И всётаки STL рулит smile 
Код
#include <iostream>
#include <vector>
#include <string>
#include <conio.h>

void menu(void);

struct addr
{
    std::string name;
    std::string numb;
    std::string book;
    std::string date;
};

std::vector<addr> addr_array;

void add(void)
{
    system("cls");
    // Тут я не понял, что должно быть
    std::cout << "--------" << std::endl << std::endl;

    addr addr_temp;
    std::cout << "--------:" << std::ends;
    std::getline(std::cin, addr_temp.name);

    std::cout << "--------:" << std::ends;
    std::getline(std::cin, addr_temp.numb);

    std::cout << "--------:" << std::ends;
    std::getline(std::cin, addr_temp.book);

    std::cout << "--------:" << std::ends;
    std::getline(std::cin, addr_temp.date);
    
    std::cout << std::endl << "--------." << std::endl;
    addr_array.push_back(addr_temp);
    
    getch();
    menu();
}

void view(void)
{
    system("cls");

    for (std::vector<addr>::const_iterator iter = addr_array.begin(); iter != addr_array.end(); iter++)
        std::cout << iter->name << " " << iter->numb << " " << iter->book << " " << iter->date << std::endl;

    getch();
}

void about(void)
{
    std::cout << "about" << std::endl;

    getch();
}

void menu(void)
{
    system("cls");

    // Тут я не понял, что должно быть
    std::cout << "--------" << std::endl << std::endl;
    std::cout << "1. --------" << std::endl;
    std::cout << "2. --------" << std::endl;
    std::cout << "3. --------" << std::endl;
    std::cout << "4. --------" << std::endl;
    std::cout << "5. --------" << std::endl;
    std::cout << "6. --------" << std::endl;
    std::cout << "7. --------" << std::endl;
    std::cout << "8. --------" << std::endl;
    std::cout << "9. --------" << std::endl;

    switch (getch())
    {
    case '1': add(); break;
    //case '2': add(); break;
    //case '3': add(); break;
    case '4': view(); break;
    //case '5': add(); break;
    //case '6': add(); break;
    //case '7': add(); break;
    //case '8': add(); break;
    case '9': about(); break;
    default: menu(); break;
    }
}

int main(int argc, char *argv[], char *envp[])
{
    menu();    
}

PM MAIL ICQ Jabber   Вверх
Aaron
Дата 2.11.2006, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



Вот, вроде есть, и работает:
Код

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

struct addr
    {
        char** name;
        char** numb;
        char** book;
        char** date;
    }addr;

int i;

void menu();

void add()
{
    system("cls");
    cout<<"Добавление новой записи"<<endl<<endl;

    cout<<"Введите ФИ}: ";
    cin.getline(addr.name[i],100);

    cout<<"Введите номер читательского билета: ";
    cin.getline(addr.numb[i],100);

    cout<<"Введите название книги: ";
    cin.getline(addr.book[i],100);

    cout<<"Введите срок возврата (вида xx.xx.xx): ";
    cin.getline(addr.date[i],100);
    i++;
    
    cout<<endl<<"Запись добавлена."<<endl;
    getch();
    menu();
}

void edit()
{
    char ename[20];
    int n;
    int p;
    system("cls");

    cout<<"Введите ФИ} записи, которую хотите изменить: ";
    cin>>ename;

    for(n=0, p=0; n!=i; n++)
    {
        if(ename[0]==*addr.name[n])
        {
            cout<<endl<<"Новое ФИ}: ";
            cin>>addr.name[n];

            cout<<"Новый номер ч/б: ";
            cin>>addr.numb[n];

            cout<<"Новое название книги: ";
            cin>>addr.book[n];

            cout<<"Новая дата возврата: ";
            cin>>addr.date[n];

            cout<<"Исправлено."<<endl;
            p++;
        }
    }
    if(p==0){cout<<endl<<"Записи не найдены."<<endl;}
    
    getch();
    menu();
}

void clear()
{
    int c;
    system("cls");

    for (c=0; c!=i; c++){*addr.name[c]=NULL;}
    for (c=0; c!=i; c++){*addr.numb[c]=NULL;}
    for (c=0; c!=i; c++){*addr.book[c]=NULL;}
    for (c=0; c!=i; c++){*addr.date[c]=NULL;}
    i=0;

    cout<<"Таблица очищена."<<endl;

    getch();
    menu();
    
}

void rem()
{
    int n;
    int p;
    char rname[20];
    system("cls");

    cout<<"Введите ФИ}: ";
    cin>>rname;

    for(n=0, p=0; n!=i; n++)
    {
        if(rname[0]==*addr.name[n])
        {
            *addr.name[n]=0;
            *addr.numb[n]=0;
            *addr.book[n]=0;
            *addr.date[n]=0;
            p++;
        }
    }
    if(p==0){cout<<endl<<"Записи не найдены."<<endl;}

    cout<<"Запись удалена."<<endl;

    getch();
    menu();
}

void search()
{
    char sname[20];
    char snumb[20];
    char sbook[20];
    char sdate[20];
    int n;
    int p;
    system("cls");

    cout<<"Введите ФИ} (для пропуска поставьте -): ";
    cin>>sname;

    cout<<"Введите номер ч/б (для пропуска поставьте -): ";
    cin>>snumb;

    cout<<"Введите название книги (для пропуска поставьте -): ";
    cin>>sbook;

    cout<<"Введите дату возврата  (вида xx.xx.xx, для пропуска поставьте -): ";
    cin>>sdate;
    cout<<endl;

    for(n=0, p=0; n!=i; n++)
    {
    
        if(sname[0]==*addr.name[n] || sname[0]=='-')
        {
            if(snumb[0]==*addr.numb[n] || snumb[0]=='-')
            {
                if(sbook[0]==*addr.book[n] || sbook[0]=='-')
                {
                    if(sdate[0]==*addr.date[n] || sdate[0]=='-')
                    {
                        if(sname[0]=='-' && snumb[0]=='-' && sbook[0]=='-' &&sdate[0]=='-'){p=0;}
                            else
                            {
                                cout<<addr.name[n]<<" "<<addr.numb[n]<<" "<<addr.book[n]<<" "<<addr.date[n]<<endl;
                                p++;
                            }
                    }
                }
            }
        }
    }
    if(p==0){cout<<endl<<"Записи не найдены."<<endl;}
    
    getch();
    menu();
}

void view()
{
    int m;
    system("cls");

    for(m=0; m!=i; m++)
    {
        if(*addr.name[m]!=0 || *addr.numb[m]!=0 || *addr.book[m]!=0 || *addr.date[m]!=0)
        {
            cout<<addr.name[m]<<" "<<addr.numb[m]<<" "<<addr.book[m]<<" "<<addr.date[m]<<endl;
        }
    }

    getch();
    menu();
}

void date_exp()
{
    char ddate[20];
    int n;
    int p;
    system("cls");

    cout<<"Введите дату (вида xx.xx.xx): ";
    cin>>ddate;

    for(n=0, p=0; n!=i; n++)
    {
        if(ddate[0]==*addr.date[n])
        {
            cout<<addr.name[n]<<" "<<addr.numb[n]<<" "<<addr.book[n]<<endl;
            p++;
        }
    }
    if(p==0){cout<<endl<<"Записи не найдены."<<endl;}

    getch();
    menu();
}

void about()
{
    system("cls");

    cout<<"Группа мБ-521 (вариант 7)"<<endl;
    cout<<"Синицын Кирилл"<<endl;
    cout<<"Беляев Вячеслав"<<endl;

    getch();
    menu();
}

void shutd()
{
    char key;

    cout<<endl<<"Вы увереы? (Y/N)"<<endl;
    while(1)
    {
        key=toupper(getch());
        if(key=='Y')exit(1);
        if(key=='N')menu();
        if(key!='Y' && key!='N')continue;
    }
}

void menu()
{
    system("cls");

    cout<<"Меню (введите номер действия)"<<endl<<endl;
    cout<<"1. Добавление новой записи"<<endl;
    cout<<"2. Редактирование записи"<<endl;
    cout<<"3. Удаление записи"<<endl;
    cout<<"4. Вывод всех записей"<<endl;
    cout<<"5. Удаление всех записей"<<endl;
    cout<<"6. Поиск записи"<<endl;
    cout<<"7. Поиск записей с актуальной датой возврата"<<endl;
    cout<<"8. } программе"<<endl;
    cout<<"9. Выход"<<endl;


    switch(getch())
    {
        case'1': add(); break;
        case'2': edit(); break;
        case'3': rem(); break;
        case'4': view(); break;
        case'5': clear(); break;
        case'6': search(); break;
        case'7': date_exp(); break;
        case'8': about(); break;
        case'9': shutd(); break;

        default: menu(); break;
    }
}

int main(int argc, char* argv[])

{

    int len0;
    int p;
    int s0;
    
    addr.name = new char*[s];
    for (p=0; p<s; p++){addr.name[p]=new char[len];}

    addr.numb = new char*[s];
    for (p=0; p<s; p++){addr.numb[p]=new char[len];}

    addr.book = new char*[s];
    for (p=0; p<s; p++){addr.book[p]=new char[len];}

    addr.date = new char*[s];
    for (p=0; p<s; p++){addr.date[p]=new char[len];}

    menu();
    return 0;
}


(вся программа)

Если я все сделал правильно, то один вопрос - не допер, как заделать неограниченное кол-во строк?
И в общем, все ли правильно я сделал-то? smile
PM MAIL ICQ   Вверх
Damarus
Дата 4.11.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 7
Всего: 29



Цитата(Aaron @  2.11.2006,  18:42 Найти цитируемый пост)
struct addr
{
    char** name;
    char** numb;
    char** book;
    char** date;
}

Ты можешь обьяснить, зачем здесь указатель на указатель. Эта структура, как я понимаю, представляет библиотечную запись. Может лучше так:
Код
struct addr
{
    char* name;
    char* numb;
    char* book;
    char* date;
}

А затем создавать нужное кол-во записей:
Код

addr *addr_array = new addr[<кол-во>];


Цитата(Aaron @  2.11.2006,  18:42 Найти цитируемый пост)
как заделать неограниченное кол-во строк?

Для этого тебе нужно сделать связанный список.

Добавлено @ 11:17 
Цитата(Aaron @  2.11.2006,  18:42 Найти цитируемый пост)
int len0;
int p;
int s0;
    
addr.name = new char*[s];
for (p=0; p<s; p++){addr.name[p]=new char[len];}

addr.numb = new char*[s];
for (p=0; p<s; p++){addr.numb[p]=new char[len];}

addr.book = new char*[s];
for (p=0; p<s; p++){addr.book[p]=new char[len];}

addr.date = new char*[s];
for (p=0; p<s; p++){addr.date[p]=new char[len];}

Тут ты создаёшь массивы нулевого размера, ведь len и s равны 0.
PM MAIL ICQ Jabber   Вверх
Kuvaldis
Дата 4.11.2006, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 32
Всего: 61



Aaron, 
Код

void clear()    
{    
    int c;    
    system("cls");    
    for (c=0; c!=i; c++){*addr.name[c]=NULL;}    
    for (c=0; c!=i; c++){*addr.numb[c]=NULL;}    
    for (c=0; c!=i; c++){*addr.book[c]=NULL;}    
    for (c=0; c!=i; c++){*addr.date[c]=NULL;}    
    i=0;    
    cout<<"Таблица очищена."<<endl;    
    getch();    
    menu();    
     
}


За такое освобождение памяти тебе бы отрезали руки (у тебя идет утечка, так как указатель ты обнулил, а память НЕ освободил)
освобождение идет через оператор delete [] <указатель>
т.е. в твоем случае:
Код

delete [] addr->name[c];
addr->name[c] = NULL;     // это не обязательно, но желательно


Добавлено @ 11:19 
Damarus прав: здесь нужен список 

Это сообщение отредактировал(а) Kuvaldis - 4.11.2006, 11:21


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Damarus
Дата 4.11.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 7
Всего: 29



Цитата(Aaron @  2.11.2006,  18:42 Найти цитируемый пост)
if(key=='Y')exit(1);
if(key=='N')menu();
if(key!='Y' && key!='N')continue;

Код
if (key == 'Y') exit(1);
else if (key == 'N') menu();
else continue;


PM MAIL ICQ Jabber   Вверх
Kuvaldis
Дата 4.11.2006, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 32
Всего: 61



Damarus, 
Код

while(1)    
    {    
        key=toupper(getch());    
        if(key=='Y')exit(1);    
        if(key=='N')menu();    
   //     if(key!='Y' && key!='N')continue;    
    }


Здесь не надо continue. Бесконечный цикл, однако smile 


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Damarus
Дата 4.11.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 7
Всего: 29



Цитата(Kuvaldis @  4.11.2006,  11:23 Найти цитируемый пост)
Здесь не надо continue. Бесконечный цикл, однако

Действительно. Не подумал. Спасибо.

Добавлено @ 11:37 
Цитата(Aaron @  2.11.2006,  18:42 Найти цитируемый пост)
if(ddate[0]==*addr.date[n])
{
    cout<<addr.name[n]<<" "<<addr.numb[n]<<" "<<addr.book[n]<<endl;
    p++;
}

Код
if (strcmp(ddate, addr.date[n]) == 0)
{
    cout<<addr.name[n]<<" "<<addr.numb[n]<<" "<<addr.book[n]<<endl;
    p++;
}


Добавлено @ 11:43 
Aaron, вообщем переписывать надо.

Это сообщение отредактировал(а) Damarus - 4.11.2006, 11:40
PM MAIL ICQ Jabber   Вверх
Aaron
Дата 4.11.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



Damarus, не совсем понял первое

Цитата(Damarus @  4.11.2006,  15:11 Найти цитируемый пост)
А затем создавать нужное кол-во записей:код C++1:addr *addr_array = new addr[<кол-во>];


про это плз подробнее...
путаюсь с этой строкой, либо в ней с синтаксисом что-то нето....в конкретном случае скажем для name как она будет выглядеть?
(вылетает с сотней однотипных ошибок)


Цитата(Damarus @  4.11.2006,  15:11 Найти цитируемый пост)
Для этого тебе нужно сделать связанный список.

что за список?

Цитата(Damarus @  4.11.2006,  15:20 Найти цитируемый пост)
if (key == 'Y') exit(1);else if (key == 'N') menu();else continue;

благодарю, фукнкция написана год назад, просто вставил ее сюда непеределывая))


Kuvaldis, 
Цитата(Kuvaldis @  4.11.2006,  15:17 Найти цитируемый пост)
За такое освобождение памяти тебе бы отрезали руки (у тебя идет утечка, так как указатель ты обнулил, а память НЕ освободил)освобождение идет через оператор delete [] <указатель>

мда, с этим я заглючил и забыл, пасиб. поправил.


Это сообщение отредактировал(а) Aaron - 4.11.2006, 14:13
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.