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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
#1

Cтруктуры. Перечисления. Объединения - C++

19.01.2011, 12:25. Просмотров 2168. Ответов 22

Вот у меня закончилась тема функции и началась СТРУКТУРЫ. ПЕРЕЧИСЛЕНИЯ. ОБЪЕДИНЕНИЯ. прочитав лекцию я так и не понял что от меня требуется в задании. Что в этой теме происходит.вот раньше например мы работали с масивами.Я знал что в функциях тоже самые масивы но по другому чуть чуть. А тут прочитал весь материал к лабораторной работе и ничего не понял.Что требуется от меня в этом задании
Миниатюры
Cтруктуры. Перечисления. Объединения  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Merlin666
96 / 96 / 10
Регистрация: 26.12.2010
Сообщений: 220
19.01.2011, 13:04     Cтруктуры. Перечисления. Объединения #2
Вам ее написать?

Добавлено через 6 минут
Первое задание:
C++
1
2
3
4
5
6
7
8
9
10
11
struct Marsh
{
  char beg[80];
  char end[80];
  int number;
 
  Marsh()
  {
   number=0;
  }
};
Добавлено через 30 минут
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
#include <vcl.h>
#include <iostream.h>
#include <cstring.h>
#pragma hdrstop
 
#pragma argsused
 
struct Marsh
{
  char beg[80];
  char end[80];
  int number;
 
  Marsh()
  {
   beg[0]=0;
   end[0]=0;
   number=0;
  }
 
  Marsh(char *b, char *e,int n)
  {
   strcpy(beg,b);
   strcpy(end,e);
   number=n;
  }
 
  friend void Swap(Marsh x, Marsh y);
  friend void Sort(Marsh x[], int n);
  friend void Print(Marsh x[],int n);
 
};
 
void Swap(Marsh x, Marsh y)
{
 Marsh *p;
 p=&x;
 
 x=y;
 
 y=*p;
}
 
void Sort(Marsh x[], int n)
{
 for (int i = 0; i < n; ++i)
 {
   for (int j = 0; j < n-1; ++j)
   {
     if (x[i].number > x[j].number)
     {
        swap(x[i], x[j]);
     }
    }
  }
 
  Print(x, n);
}
 
 
void Print(Marsh x[],int n)
{
  for (int i=0;i<n;i++)
  {
    cout<<x[i].number<<" ";
  }
}
 
void main()
{
  Marsh *newmarsh=new Marsh[8];
 
  for (int i=0;i<8;i++)
   newmarsh[i]=Marsh();
 
  for (int i=0;i<8;i++)
  {
    cout<<"Marsh #"<<i+1<<"\n";
    cout<<"Num = "; cin>>newmarsh[i].number;
    cout<<"Beg = "; cin>>newmarsh[i].beg;
    cout<<"End = "; cin>>newmarsh[i].beg;
    cout<<"\n";
  }
 
  Sort(newmarsh,8);
}
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
19.01.2011, 23:56  [ТС]     Cтруктуры. Перечисления. Объединения #3
Спасибо но я не понял что это мне еще не понятно.Что в этом задание требуется разьясните А то я даже не понимаю что это из себя представляет
rdksoft
22 / 22 / 2
Регистрация: 24.12.2008
Сообщений: 81
20.01.2011, 00:01     Cтруктуры. Перечисления. Объединения #4
В первом задании требуется всего лишь описать структуру как это делается думаю объяснять не стоит)
C++
1
2
3
4
5
6
struct Marsh
{
  char beg[80];
  char end[80];
  int number;
};
А во втором требуется всего лишь обработать массив из этих структур.
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
20.01.2011, 01:09  [ТС]     Cтруктуры. Перечисления. Объединения #5
сама структура beg80 b end 80 это что?
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
20.01.2011, 02:04     Cтруктуры. Перечисления. Объединения #6
C++
1
2
3
4
5
6
struct Marsh
{
 char beg[80]; // массив символов(начальный пункт маршрута)
 char end[80]; // массив символов(конечный пункт маршрута)
 int number; // номер маршрута
};
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
20.01.2011, 11:38  [ТС]     Cтруктуры. Перечисления. Объединения #7
А номер маршрута указывает на какойто элемент масссива ?
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
20.01.2011, 14:24     Cтруктуры. Перечисления. Объединения #8
Цитата Сообщение от Steam.dll Посмотреть сообщение
А номер маршрута указывает на какойто элемент масссива ?
Нет, ето просто порядковый номер!!!
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
20.01.2011, 14:44  [ТС]     Cтруктуры. Перечисления. Объединения #9
порядковый номер элемента массива?
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
20.01.2011, 15:27     Cтруктуры. Перечисления. Объединения #10
Цитата Сообщение от Steam.dll Посмотреть сообщение
порядковый номер элемента массива?
Да нет, можно сказать просто номер, он может быть какой угодно!!!
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
20.01.2011, 16:25  [ТС]     Cтруктуры. Перечисления. Объединения #11
я просто не могу соорентироватся масив это цифры написанные в столбец . что эта програма должна виводить на экран
asics
Freelance
Эксперт C++
2844 / 1781 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
20.01.2011, 16:34     Cтруктуры. Перечисления. Объединения #12
Цитата Сообщение от Steam.dll Посмотреть сообщение
я просто не могу соорентироватся масив это цифры написанные в столбец
Изложы свой вопрос в болие понятной форме, если хочешь что бы кто-то ответил на него.
Цитата Сообщение от Steam.dll Посмотреть сообщение
что эта програма должна виводить на экра
Ты задание вообще читал ?
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
13.02.2011, 20:00  [ТС]     Cтруктуры. Перечисления. Объединения #13
Для чего нужны структуры? И вот в программе как ей воспользоватся?
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <iostream>
using namespace std;
struct rip 
    {
    char a[400];
    char b[400];
    int  c;
    } ;
int main(void)
{
    
    int f;
    rip a[400];
    rip b[400];
    rip c;
    char d[400];
    char o[400];
    gets(d);
    gets(o);
    strcpy(d,a);
    strcpy(d,b);
    scanf("%d",&c);
    {
        f=c;
    }
    printf("%d",f);
    printf("%s\n%s",a,b);
    getch();
    return 0;
}
asics
Freelance
Эксперт C++
2844 / 1781 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
13.02.2011, 20:07     Cтруктуры. Перечисления. Объединения #14
Цитата Сообщение от Steam.dll Посмотреть сообщение
Для чего нужны структуры?
Для создания пользовательских типов данных.

Добавлено через 2 минуты
Цитата Сообщение от Steam.dll Посмотреть сообщение
И вот в программе как ей воспользоватся?
Скомпилируй, запусти, потестируй.
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
13.02.2011, 21:17  [ТС]     Cтруктуры. Перечисления. Объединения #15
Эту псевдо программу напечатал я сам. Она не работает пишет что я не правильног обьявил переменные из структуры.
asics
Freelance
Эксперт C++
2844 / 1781 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
13.02.2011, 21:19     Cтруктуры. Перечисления. Объединения #16
А задание какое ?
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
13.02.2011, 21:58  [ТС]     Cтруктуры. Перечисления. Объединения #17
Да я просто разобраться со структурами хочу. В ней структура дальше я обьявил два масива в них через gets Вводятся данные и потом из этих массивов содержимое копируется в другой массив и выводится на экран как бы задумано. Но она что то не раотает.
asics
Freelance
Эксперт C++
2844 / 1781 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
13.02.2011, 22:08     Cтруктуры. Перечисления. Объединения #18
Цитата Сообщение от Steam.dll Посмотреть сообщение
Вводятся данные и потом из этих массивов содержимое копируется в другой массив
А структуры тут при чем, если Вы хотите скопировать данные з одного масива символов в другой ?

Добавлено через 3 минуты
Так что давайте уточним:
есть структура
C++
1
2
3
4
5
6
struct rip 
{
        char a[400];
        char b[400];
        int  c;
};
обращение к полям структуры осуществляеться через оператор "точка" то есть так
C++
1
2
rip obj;//Создаем обект структуры
obj.a //обращаемся к масиву "a"
а если есть масив структур то есть так
C++
1
2
rip obj[10];//Масив из десяти перемнных типа rip
obj[0].a//Обращение к масиву а первой перемменой з нашего масива структур
Мигрень
20 / 20 / 2
Регистрация: 09.11.2010
Сообщений: 102
13.02.2011, 22:34     Cтруктуры. Перечисления. Объединения #19
Раз тема про структуры, то я решил вставить свои пять коп
Сам толком с структурами дела не имел, но ответить на тесты надо


Объедение в структурах применяется для того, чтобы:
1) Объединять в одной переменной несколько параметров объекта, с которым работает программист
2) программа стала более понятной
3) Экономить память
4) Заменять старые имена имеющихся типов на новые
5) давать названия новым типам, которые конструируют программисты
6) объявлять новые имена для уже имеющихся типов
Выбрать правильные ответы...


Буду очень благодарен
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2011, 22:40     Cтруктуры. Перечисления. Объединения
Еще ссылки по теме:

Структуры, Объединения, Перечисления C++
Cтруктуры, поиск книг заданного автора C++
Перечисления в классах C++
Перечисления заданного типа C++
Получить значение перечисления C++

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

Или воспользуйтесь поиском по форуму:
asics
Freelance
Эксперт C++
2844 / 1781 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
13.02.2011, 22:40     Cтруктуры. Перечисления. Объединения #20
Мигрень, Думаю что
Цитата Сообщение от Мигрень Посмотреть сообщение
3) Экономить память
обосновуя тем, что обединения изначально были созданы для того, что бы экономит память.
Yandex
Объявления
13.02.2011, 22:40     Cтруктуры. Перечисления. Объединения
Ответ Создать тему
Опции темы

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