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

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

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

Как создаются динамические структуры - C++

26.02.2009, 16:12. Просмотров 1003. Ответов 11
Метки нет (Все метки)

Добрый вечер всем!!! Подскажите пожалуйста, как создаются динамические структуры. Если не сложно, объясните, как из этой вот структуры создать динамическую структуру!
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
#include <stdio.h>
#include <conio.h>
#define num 5
 
struct Run_gear {
    char Ture[50];
    int Size_ture;
};
struct AVTO {
    Run_gear r_g;
    char Name[100];
    char Collor[50];
    int Year_make;
};
 
void main () {
    struct AVTO car[num],buf;
    int i,a,b;
 
    for (i=0; i<num; i++)
    {
        a=i+1;
        printf("Car===>[%d]\n",a);
        
        printf("Input model car: ");
        scanf("%s",&car[i].Name);
        
        printf("Input collor car: ");
        scanf("%s",&car[i].Collor);
        
        printf("Input year make car: ");
        scanf("%d",&car[i].Year_make);
        
        printf("Input ture car: ");
        scanf("%s",&car[i].r_g.Ture);
        
        printf("Input size ture car: ");
        scanf("%s",&car[i].r_g.Size_ture);
        printf("\n");
    }
    
    for (i=0; i<num; i++)
    {
        b=i+1;
        printf("***\n");
        printf("CAR[%d] \nName car: %s\nCollor car: %s\nYear make car: %d\nTure car: %s\nSize ture car: %d\n",b,car[i].Name,car[i].Collor,car[i].Year_make,car[i].r_g.Ture,car[i].r_g.Size_ture);
    
    }
    printf("\n\n\n\n\n\n\n\n\n");
    buf=car[0]; // Обмен строк car
    car[0]=car[4];
    car[4]=buf;
    for (i=0; i<num; i++)
    {
        b=i+1;
        printf("***\n");
        printf("CAR[%d] \nName car: %s\nCollor car: %s\nYear make car: %d\nTure car: %s\nSize ture car: %d\n",b,car[i].Name,car[i].Collor,car[i].Year_make,car[i].r_g.Ture,car[i].r_g.Size_ture);
        
    }
   getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
26.02.2009, 16:48     Как создаются динамические структуры #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
вроде так на си
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
#include <stdio.h>   
#include <conio.h>   
#define num 5   
  
typedef struct _Run_gear {   
    char Ture[50];   
    int Size_ture;   
}Run_gear;   
typedef struct _AVTO {   
    Run_gear r_g;   
    char Name[100];   
    char Collor[50];   
    int Year_make;   
}AVTO;   
  
void main () {   
     AVTO *car = (AVTO*)malloc(sizeof(AVTO)*num);
     AVTO *buf = (AVTO*)malloc(sizeof(AVTO));   
     int i,a,b;   
     for (i=0; i<num; i++)   
     {   
        a=i+1; 
          
        printf("Car===>[%d]\n",a);   
           
        printf("Input model car: ");   
        scanf("%s",&(car+i)->Name);   
           
        printf("Input collor car: ");   
        scanf("%s",&(car+i)->Collor);   
           
        printf("Input year make car: ");   
        scanf("%d",&(car+i)->Year_make);   
           
        printf("Input ture car: ");   
        scanf("%s",&(car+i)->r_g.Ture);   
           
        printf("Input size ture car: ");   
        scanf("%s",&(car+i)->r_g.Size_ture);   
        printf("\n");   
     }   
     for (i=0; i<num; i++)   
     {   
        b=i+1;   
        printf("***\n");   
        printf("CAR[%d] \nName car: %s\nCollor car: %s\nYear make car: %d\nTure car: %s\nSize ture car: %d\n",b,(car+i)->Name,(car+i)->Collor,(car+i)->Year_make,(car+i)->r_g.Ture,(car+i)->r_g.Size_ture);   
       
     }   
     printf("\n\n\n\n\n\n\n\n\n");  
     
     //!!! 
     //buf=car; //Обмен строк car
     //car=car+4;   
     //(car+4)=buf;   
     //!!!
     for (i=0; i<num; i++)   
     {   
        b=i+1;   
        printf("***\n");   
        printf("CAR[%d] \nName car: %s\nCollor car: %s\nYear make car: %d\nTure car: %s\nSize ture car: %d\n",b,(car+i)->Name,(car+i)->Collor,(car+i)->Year_make,(car+i)->r_g.Ture,(car+i)->r_g.Size_ture);   
           
     }   
     free(car);
     free(buf);
     getch();   
}
Lord_Voodoo
Супер-модератор
8510 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,854
Завершенные тесты: 1
26.02.2009, 17:09     Как создаются динамические структуры #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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
//#define num 5
struct Run_gear {
    char Ture[50];
    int Size_ture;
};
struct AVTO {
    Run_gear r_g;
    char Name[100];
    char Collor[50];
    int Year_make;
};
int main () {
    AVTO* car;
    AVTO buf;
    int i,a,b, num;
    printf("enter size of array\n");
    scanf("%d",&num);
    car = (AVTO*)malloc(num* (sizeof(AVTO)));
    for (i=0; i<num; i++)
    {
        a=i+1;
        printf("Car===>[%d]\n",a);
        printf("Input model car: ");
        scanf("%s",&car[i].Name);
        printf("Input collor car: ");
        scanf("%s",&car[i].Collor);
        printf("Input year make car: ");
        scanf("%d",&car[i].Year_make);
        printf("Input ture car: ");
        scanf("%s",&car[i].r_g.Ture);
        printf("Input size ture car: ");
        scanf("%d",&car[i].r_g.Size_ture);
        printf("\n");
    }
    for (i=0; i<num; i++)
    {
        b=i+1;
        printf("***\n");
        printf("CAR[%d] \nName car: %s\nCollor car: %s\nYear make car: %d\nTure car: %s\nSize ture car: %d\n",b,car[i].Name,car[i].Collor,car[i].Year_make,car[i].r_g.Ture,car[i].r_g.Size_ture);
    }
    printf("\n\n\n\n\n\n\n\n\n");
    if(num > 4){
      buf=car[0]; // ÎáìåГ* ñòðîê car
      car[0]=car[4];
      car[4]=buf;
      for (i=0; i<num; i++)
      {
          b=i+1;
          printf("***\n");
          printf("CAR[%d] \nName car: %s\nCollor car: %s\nYear make car: %d\nTure car: %s\nSize ture car: %d\n",b,car[i].Name,car[i].Collor,car[i].Year_make,car[i].r_g.Ture,car[i].r_g.Size_ture);
     }
   }
   getch();
   delete [] car;
   return 0;
}
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
26.02.2009, 17:17     Как создаются динамические структуры #4
C++
1
2
3
car = (AVTO*)malloc(num* (sizeof(AVTO)));  
//.....
delete [] car;//<-
и это нормально?
xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
26.02.2009, 21:08  [ТС]     Как создаются динамические структуры #5
А как всё это будет выглядеть черезь оператор new?
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
26.02.2009, 21:24     Как создаются динамические структуры #6
вот так
C++
1
2
3
car = new AVTO[num];     
//.....   
delete [] car;
xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
26.02.2009, 21:56  [ТС]     Как создаются динамические структуры #7
Что не правильно делаю?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct Num 
{
    int a;
    int b;
}s;
 
void main()
{
    s* ptr=(*s)malloc(sizeof(s));
    ptr->a=1;
    ptr->b=2;
    printf("%d,%d",a,b);
    getch;
}
Lord_Voodoo
Супер-модератор
8510 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,854
Завершенные тесты: 1
26.02.2009, 21:56     Как создаются динамические структуры #8
ISergey, как ни странно, работает, а как там по теория не знаю
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
26.02.2009, 22:23     Как создаются динамические структуры #9
Код
s* ptr=(s[COLOR="Red"]*[/COLOR])malloc(sizeof(s));
Добавлено через 10 минут 16 секунд
WooDooMan, использование new и delete с malloc и free есть плохая идея.
Lord_Voodoo
Супер-модератор
8510 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,854
Завершенные тесты: 1
26.02.2009, 22:35     Как создаются динамические структуры #10
ISergey, блин, пардон, точно мой косяк)))) просто писал на работе... практически на автомате...
xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
05.03.2009, 17:04  [ТС]     Как создаются динамические структуры #11
Нашёл в инете маленькую программку про "списки". Практически всё понятно, но не могу въехать для чего вот это
Код
C++
1
2
last->next = ptr;
   last = ptr;
Точнее сказать непонятно зачем и last, и last->next указывают на ptr?
Код
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
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
 
struct num
{
int a;
int b;
struct num* next;
};
 
void main()
{
num *ptr,*first, *last;
first = NULL;
last = NULL;
int a;
while (1)
{
  printf("?");
  char sym = getch();
  if (sym != 'Y')
   break;
  //....
  ptr=(num*)malloc(sizeof(num));
  printf("a = ");
  scanf("%d",&ptr->a);
  printf("b = ");
  scanf("%d",&ptr->b);
  ptr->next=NULL;
 
  if (last == NULL)
  {
   first = ptr;
   last = ptr;
  }
  else
  {
   last->next = ptr;
   last = ptr;
  }
};
getch();
Добавлено через 12 минут 12 секунд
Нашёл в инете маленькую программку про "списки". Практически всё понятно, но не могу въехать для чего вот это
Код
last->next = ptr;
last = ptr;
Точнее сказать непонятно зачем и last, и last->next указывают на ptr.
Код
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
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
 
struct num
{
int a;
int b;
struct num* next;
};
 
void main()
{
num *ptr,*first, *last;
first = NULL;
last = NULL;
int a;
while (1)
{
  printf("?");
  char sym = getch();
  if (sym != 'Y')
   break;
  //....
  ptr=(num*)malloc(sizeof(num));
  printf("a = ");
  scanf("%d",&ptr->a);
  printf("b = ");
  scanf("%d",&ptr->b);
  ptr->next=NULL;
 
  if (last == NULL)
  {
   first = ptr;
   last = ptr;
  }
  else
  {
   last->next = ptr;
   last = ptr;
  }
};
getch();
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2009, 16:10     Как создаются динамические структуры
Еще ссылки по теме:

Динамические структуры данных на языке С/С++ C++
C++ Как объявлять и инициализировать динамические структуры?
Динамические массивы создаются в динамической области памяти с использованием операций NEW и DELETE C++

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

Или воспользуйтесь поиском по форуму:
xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
12.03.2009, 16:10  [ТС]     Как создаются динамические структуры #12
Народ, подскажите как найти предыдущий элемент!!!
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
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
 
struct test
{
    int a;
    struct test *next;
};
 
void main()
{
    struct test *ptr,*first,*last,*pr,*pred,*first_1,*last_1;
    first=NULL;
    last=NULL;
 
    while(1)
    {
        printf("?");
        char ch=getch();
        if (ch!='y')
            break;
        ptr=(test*)malloc(sizeof(test));
        printf("a = ");
        scanf("%d",&ptr->a);
        if (last==NULL)
        {
            first=ptr;
            last=ptr;
        }
        else
        {
            last->next=ptr;
            last=ptr;
            last->next=NULL;
        }
 
    };
    printf("\n\n\n\n");
    pr=first;
    while(pr!=NULL)
    {
        printf("   %d",pr->a);
        pr=pr->next;
    }
    printf("\n\n\n\n");
    pr=first;
    while (pr->next!=NULL)
    {
        pr=pr->next;
    }
    pred=pr;
    printf("\n%d",pred->a);
    //first_1=last;
    //last_1=first;
 
    getch();
}
Yandex
Объявления
12.03.2009, 16:10     Как создаются динамические структуры
Ответ Создать тему
Опции темы

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