Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Nmzph
0 / 0 / 0
Регистрация: 20.02.2011
Сообщений: 2
#1

Массив структурок

24.02.2011, 01:16. Просмотров 391. Ответов 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
#include <conio.h>
#include <malloc.h>
#include <iostream>
 
typedef struct sost{
    char *fam;
}
typedef struct pika{
    int year;
    char *song;
    struct sost *perry;
}dead;
 
 
void main ()
{
    dead *berry;
    int i,size,k,numbrs;
 
    puts("Please puts the size.");
    scanf("%d",&size);
    //berry=(dead*)malloc(size*sizeof(dead));
    for (i=0;i<size;i++)
        {
        berry[i].song=(char*)malloc(10*sizeof(char));
        printf("Song:");
        gets(berry[i].song);
    
        printf("Year:");
        scanf("%d",&berry[i].year);
                
        puts ("\nBand numbers\n");
        scanf("%d",&numbrs);
 
        for (k=0;k<numbrs;k++)
        {
            berry[i].perry[k].fam=(char*)malloc(12*sizeof(char));
            printf("Second name:");
            gets(berry[i].perry[k].fam);
        }
    }
        
            
        for (i=0;i<size;i++)
        {
            printf("\n\t  Song:%s\n\t Year:%d",berry[i].song,berry[i].year);
            for (k=0;k<numbrs;k++)
            printf("\n\t  Second name:%s\n\t ",berry[i].perry[k].fam);
        }
getche();
}
где-то я лажаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2011, 01:16
Ответы с готовыми решениями:

Сформировать массив, который будет состоять из чисел, входящих как в массив A, так и в массив B
Задание: На основе исходных массивов A и B (n и m – рабочие размеры массивов)...

Сформировать массив C, который будет состоять из чисел, которые одновременно входят как в массив A, так и в массив B
Есть задание :На основе исходных массивов A и B (n и m – рабочие размеры...

Построить массив d из элементов, которые входят как в массив a так и в массив b
Дан массив a и b состоящий из n элементов. Построить массив d из элементов,...

Дан массив размерности n. Заполнить массив случайными числами в диапазоне [-100;100]. Перевернуть массив:
Дан массив размерности n. Заполнить массив случайными числами в диапазоне ....

Вывести на печать массив X, массив Z, массив Y, произведение элементов массива X, упорядоченный массив Y
Вывести на печать массив X, массив Z, массив Y, произведение элементов массива...

3
accept
4833 / 3255 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
24.02.2011, 11:12 #2
C
1
scanf("%d", &numbrs);
после этой строки нужно выделить массив структур sost
потом уже цикл заполняет их

sizeof(char) всегда равно еденице
поэтому
C
1
berry[i].perry[k].fam=(char*)malloc(12*sizeof(char));
можно заменить на
C
1
berry[i].perry[k].fam = (char *) malloc(12);
учитывая нуль-символ, получается, что туда можно сохранить не более 11 символов

важно очищать также память в конце
1
Nmzph
0 / 0 / 0
Регистрация: 20.02.2011
Сообщений: 2
26.02.2011, 19:53 #3
тогда я так выделю после
C
1
 scanf("%d",&numbrs);
C
1
if ((berry[i].perry=(sost*)malloc(numbrs*sizeof(sost)))==NULL) puts ("errors");
Еще интересует как правильно выделить память для *berry
Так
C
1
berry=(dead*)malloc(size*sizeof(dead));
или
0
accept
4833 / 3255 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
27.02.2011, 06:32 #4
Цитата Сообщение от Nmzph
Еще интересует как правильно выделить память для *berry
да правильно там

C
1
2
3
typedef struct sost{
        char *fam;
}
ошибка

по логике
C
1
2
3
typedef struct sost{
        char *fam;
} sost;
лучше называть новое имя типа как-нибудь отлично от имён переменных, типа Sost, sost_t или Sost_t
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2011, 06:32

Дан массив целых чисел а(12). Переписать в массив х четные, а в массив у нечетные элементы массива а
Помогите пожалуйста решить эту задачу. Массив a выводит на печать. Я пишу a mod...

Дан одномерный массив A из N элементов. Переписать положительные элементы массива в массив B, а отрицательные в массив C
Дан одномерный массив A из N элементов. Переписать положительные элементы...

Массив: Получить новый массив P, состоящую из чисел в интервале (a,b), которые не входят в массив H...
Помогите с заданием, пожалуйста :Написать программу, которая формирует новую...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru