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

Изменить способ выделения памяти для массива (вместо new использовать malloc) - C++

Восстановить пароль Регистрация
 
Джигмэн
9 / 9 / 1
Регистрация: 15.12.2012
Сообщений: 64
12.02.2013, 10:55     Изменить способ выделения памяти для массива (вместо new использовать malloc) #1
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
#include "stdafx.h"
#include "stdlib.h"
 
struct str_Team{
        char Komanda[77];
        int Ochki;
        int Gold;
        int Silver;
        int Bronze;
        };
 
void Error(){
    printf("\nINPUT ERROR!\n\n");
    exit(0);
}
 
void FOchki(str_Team *Team, int N){
    for(int i=0; i<N; i++)
        Team[i].Ochki = Team[i].Gold*5 + Team[i].Silver*2 + Team[i].Bronze*1;
}
 
void SSort(str_Team *T, const int N){
    str_Team *B = new str_Team[N];
  for(int i=0; i<N; i++){
      int c=0;
        for(int j = 0; j<i; j++)
        {
            if (T[j].Ochki <= T[i].Ochki) c++;
        }
        for(int j=i+1; j<N; j++)
        {
            if (T[j].Ochki < T[i].Ochki) c++;
        }
        B[c] = T[i];
}
  for(int i=0; i<N; i++)
    {
        T[i]=B[i];
    }
    delete B;
 
}
 
 
void main(){
    const int N =3;
    str_Team Team[N];
 
    for(int i=0; i<N; i++){
        printf("Vvedi nazvanie komandi: ");
            scanf("%s",&Team[i].Komanda);
        printf("Vvedi kol-vo zolota: ");
            if((scanf("%d",&Team[i].Gold)==0)||(Team[i].Gold<0)) Error();
        printf("Vvedi kol-vo serebra: ");
            if((scanf("%d",&Team[i].Silver)==0)||(Team[i].Silver<0)) Error();
        printf("Vvedi kol-vo bronzi: ");
            if((scanf("%d",&Team[i].Bronze)==0)||(Team[i].Bronze<0)) Error();
        printf("\n-----------------------------------------------\n");
    }
 
    FOchki(Team, N);
    printf("\n\nBalli:\n");
        for(int i=0; i<N; i++) printf("%s:\t%d\n",Team[i].Komanda,Team[i].Ochki);
 
    SSort(Team, N);
    printf ("\nSpisok po ubivaniu:\n");
    for ( int i=N-1; i>=0; i--)
    {
        printf("%d: %s\n",(i+1),Team[i].Komanda);
    }
    
    
}
а именно - эта часть:
C++
1
2
void SSort(str_Team *T, const int N){
    str_Team *B = new str_Team[N];
как устроить выделение через маллок? Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 10:55     Изменить способ выделения памяти для массива (вместо new использовать malloc)
Посмотрите здесь:

использовать new вместо обьявления массива из трех структур C++
выделение памяти malloc C++
C++ Освобождение памяти malloc free
C++ Средства для уменьшения выделения памяти
C++ Ошибка выделения памяти для двумерного массива
Допустимо ли вместо индекса массива использовать i-ый элемент другого массива? C++
C++ Передача массива указателей в функцию для выделения памяти
Как написать программу для динамического выделения памяти с использованием new C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
12.02.2013, 11:00     Изменить способ выделения памяти для массива (вместо new использовать malloc) #2
как-то так:
C++
1
str_Team *B = (str_Team*)malloc(N*sizeof(str_Team));
Yandex
Объявления
12.02.2013, 11:00     Изменить способ выделения памяти для массива (вместо new использовать malloc)
Ответ Создать тему
Опции темы

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