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

Макросы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.71
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
28.05.2011, 14:17     Макросы #1
Ребята помогите!Надо переделать все пож макросы.Но в литературе как -то всё обрывками написано.непонятно как целиком программу писать!

вот напримет,было сказано - пишем в тексте программы

MyInclude.cpp
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>



хорошо,ну я это и написала.и что??что дальше??как потом это использовать и куда это вписывать!!!?
обьясните пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2011, 14:17     Макросы
Посмотрите здесь:

Макросы C++
макросы C++
Макросы C++
C++ макросы
C++ Предопределённые макросы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
28.05.2011, 14:18     Макросы #2
Напишите конкретно, что надо-то? Какое задание?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
28.05.2011, 14:19     Макросы #3
barlog, успокойся немного и попытайся внятно объяснить, какая перед тобой стоит задача и с какими трудностями ты столкнулась, про какую литературу идет речь. А то я лично вообще ничего не понял (и не я один).
И при чем здесь, собственно, макросы?
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
28.05.2011, 17:16  [ТС]     Макросы #4
ну задание - типа любую готовую программу переделать используя макросы(ну или я не знаю,вообщем вот это :#define....)

Вот я написала...а оно не работает...а раньше без этого работало..почему??

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include "F:\\Lab_11\\macros+\\Tochki\\MyInclude.cpp"
 
 
 
#define m                   3
#define FILE_WRITE          arf= fopen("F:\\Lab_11\\macros+\\Tochki\\mat.txt","wb")
#define FILE_READ           arf= fopen("F:\\Lab_11\\macros+\\Tochki\\mat.txt","rb")
#define FILE_APPEND         arf= fopen("F:\\Lab_11\\macros+\\Tochki\\mat.txt","ab")
#define X                   cout<<" x= "\ cin>>x
#define Y                   cout<<" y= "\ cin>>y
#define Z                   cout<<" z= "\ cin>>z
#define R                   cout<<" r= "\ cin>>R
#define MENU                cout<< "\n1 -- CREATE"<<endl<<"2 -- APPEND"<<endl<< \
                            "3 -- FUNCTION"<<endl<<"0 -- EXIT"<<endl
#define CLOSE               fclose(arf)
#define ZIKL(var,from,to)   for(int var=from;var<to;var++)
 
 
 
 FILE  *arf;
 
void MyCr()
{   int a[m];
  FILE_WRITE ;
    printf("\n");
    int n;   // кол-во строк матрицы
    cout<<"Vvedite kol-vo tochek: " ;
     cin>>n ;
    ZIKL(i,0,n)
    { cout<<endl;
       ZIKL(j,0,m)
          {
          cin>>a[j] ;
 
          }
          fwrite (a, sizeof(a),1, arf);
    }
    CLOSE ;
    cout<<"\nFile was created"<<endl;
       }
 
 
 
 
 
 void MyRead1(int x ,int b ,int c ,int R)    // Проверка условия
   {    int a[m];
        int k=0 ;
 
        FILE *arf ;
        FILE_READ  ;
 
       fread(a,sizeof(a),1,arf);
       while (!feof(arf))
      {
       if( (a[0]-x)*(a[0]-x)+(a[1]-b)*(a[1]-b)+(a[2]-c)*(a[2]-c)<=R*R )
       { k++ ;  }
 
/* Читаем следующий одномерный массив (строку "матрицы")
из файла в оперативную память. Как и вне цикла,
возможны разные варианты использования функции  fread */
 
         fread(a,m*sizeof(int),1,arf);
      }
 
        CLOSE ;
 
     cout<<"Kol-vo tochek prinadlezashix shary: " ;
     cout<<k<<endl ;
     }
 
 
 
void MyAppend()
{   int a[m];
    char ch ;
     FILE  *arf;
   randomize();
   FILE_APPEND;
      do { cout<<endl;
     ZIKL(i,0,m)
           {a[i]=random(12)-5;
           cout<<a[i]<<" " ;
            }
        fwrite(a,sizeof a,1,arf);
        cout<<"\n * -- exit" ;
        ch=getch();
    } while (ch!='*');
    CLOSE ;
 
}
 
 
 
 
int main()
{ int  flag;
             int x,b,c , R  ;
             X;Y;Z;R;
 while (1)
{ MENU;
 cin>>flag;
  switch (flag)
            {  case 1: MyCr(); break;
               case 2: MyAppend();  break;
               case 3: MyRead1(x,b,c,R) ;  break;
               case 0: return 0;
            }
          }
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.05.2011, 18:06     Макросы #5
barlog, Не делайте так НИКОГДА. А того кто просит так делать - смело шлите.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
28.05.2011, 19:31     Макросы #6
barlog, у макросов Си есть своя область применения - для подстановок, выполняемых во время компиляции программы. И для использования специальных препроцессорных операторов/

Не по теме:

Кстати, директива #include предназначена для подключения только исходных файлов (ну или изображений *.xpm)


А задание само очень странное
Ну вот простая программа - генерация и вывод случайной квадратной матрицы заданного порядка.
"До":
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{
    int** matrix;
 
    size_t i, j;
 
    size_t size;
        
    srand((size_t) time(NULL));
 
    fputs("Input size: ", stdout);
    scanf("%u", &size);
    
    matrix = malloc(size * sizeof(int*));
 
    if(matrix == NULL)
    puts("Can't allocate memory"), exit(1);
    
    for(i = 0; i < size; ++i)
    {
    matrix[i] = malloc(size * sizeof(int));
 
    if(matrix[i] == NULL)
        puts("Can't allocate memory"), exit(1);
 
    for(j = 0; j < size; ++j)
        matrix[i][j] = rand() % 51 - 25;
    }
 
    for(i = 0; i < size; ++i)
    for(j = 0; j < size; ++j)
        printf("matrix[%u][%u] = %d\n", i, j, matrix[i][j]);
 
    for(i = 0; i < size; ++i)
    free(matrix[i]);
    free(matrix);
    
    exit(0);
}
"После":
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define DIE_IF(EXPR, REASON) \
    if(EXPR) puts(REASON), exit(1)
 
#define PRINT_MATRIX(M, I, J, FORMAT) \
    printf(#M "[%u][%u] = " #FORMAT "\n", I, J, (M)[I][J])
 
#define L_T -25
#define R_T  25
 
int main()
{
    int** matrix;
 
    size_t i, j;
 
    size_t size;
        
    srand((size_t) time(NULL));
 
    fputs("Input size: ", stdout);
    scanf("%u", &size);
    
    matrix = malloc(size * sizeof(int*));
 
    DIE_IF(matrix == NULL, "Can't allocate memory");
        
    for(i = 0; i < size; ++i)
    {
    matrix[i] = malloc(size * sizeof(int));
 
    DIE_IF(matrix[i] == NULL, "Can't allocate memory");
 
    for(j = 0; j < size; ++j)
        matrix[i][j] = rand() % (R_T - L_T + 1) + L_T;
    }
 
    for(i = 0; i < size; ++i)
    for(j = 0; j < size; ++j)
        PRINT_MATRIX(matrix, i, j, %d);
    
    for(i = 0; i < size; ++i)
    free(matrix[i]);
    free(matrix);
    
    exit(0);
}
Yandex
Объявления
28.05.2011, 19:31     Макросы
Ответ Создать тему
Опции темы

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