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

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

Войти
Регистрация
Восстановить пароль
 
Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
#1

Структуры. Вызов данных структуры по указателю. с++ - C++

29.12.2011, 01:17. Просмотров 1110. Ответов 9
Метки нет (Все метки)

Условие задачи:

Напишите прогу, которая печатает содержимое структуры под названием Reading. Reading имеет следующие характеристики:
- Reading номер
- количество
- Описание (20 символов)

Тест программа должна создать Reading контент которого назначается на уровне инициализации.
Печать Reading осуществляется с помощью Print() функции. Это функция использует адрес структуры как параметр.

Дополнение: Допустим p указатель структуры. Это позволит вывести печать полей таким образом (*p).fieldname or p->fieldname.
Помогите, пожалуйста, с как реализовать печать вообще не представляю.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2011, 01:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структуры. Вызов данных структуры по указателю. с++ (C++):

Понятие структуры данных. Элементарные структуры данных. Простые структуры данных - C++
Понятие структуры данных. Элементарные структуры данных. Простые структуры данных: методы реализации, особенности в различных языках...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё. - C++
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...

Помещение структуры в вектор, удаление структуры, изменение элементов структуры - C++
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный элемент структуры. 2 - удалять...

Как получить доступ к элементов структуры по указателю (С++)? - C++
Как можно получить доступ к элементам структуры? Есть указатель на void * ( указывает на определенную структуру ). Пример: struct...

Вызов из структуры - C++
Доброе утро! Возник вопрос по следующему поводу: Есть структура: struct { char predmet; char people; int four_mark; } jurnal; ...

Структуры, вызов метода - C++
Здравствуйте, недавно начал изучать язык С++, до этого работал с языком pawn ( используется как встроенный язык программирования для AMXX и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
29.12.2011, 01:20 #2
Рекомендую начать с изучения структур.
1
Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
29.12.2011, 18:11  [ТС] #3
Вот родился такой код.
Все бы хорошо код компилируется и выдает переменные.
Только вместе с компеляцией выдается такая
ошибка : "Run-Time Check Failure #2 - Stack around the variable 'art' was corrupted."

Подскажите в чем у меня ошибка.
заранее спасибо
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
#include <conio.h>
#include <iostream>
 
using namespace std; 
struct Article
{
    int Article_number;
    int Quantity;
    char Decription[20] ;
};
 
void Print (struct Article *art )
{
cout << "article number: " << art -> Article_number;
cout << endl;
cout << "article number: " << art -> Quantity ;
cout << endl;
cout << "article number: " << art -> Decription[20] ;
cout << endl;
}
 
int main (int argc, char *argv[])
{
    struct Article art; 
 
    art.Article_number = 554; 
    art.Decription[20] = ('H','i');
    art.Quantity = 11;
 
    Print(&art);
    cout << endl;
    system ("pause") ;
 
}
0
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.12.2011, 18:15 #4
Цитата Сообщение от Leeto Посмотреть сообщение
art.Decription[20] = ('H','i')
Чего вы пытались добиться этой строкой?
1
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.12.2011, 18:21 #5
Цитата Сообщение от Leeto Посмотреть сообщение
Дополнение: Допустим p указатель структуры. Это позволит вывести печать полей таким образом (*p).fieldname or p->fieldname.
К чему это? А еще можно
C
1
f[0].fildname
Цитата Сообщение от Leeto Посмотреть сообщение
cout << "article number: " << art -> Decription[20] ;
Ошибка, выход за пределы массива.
1
Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
29.12.2011, 18:24  [ТС] #6
Цитата Сообщение от soon Посмотреть сообщение
Чего вы пытались добиться этой строкой?
Хочу чтобы массив выводил не более 20 символов, как по заданию... в конкретном случаю хочу чтобы он "Hi" написал.

Добавлено через 3 минуты
Цитата Сообщение от go Посмотреть сообщение
К чему это? А еще можно
C
1
f[0].fildname
Просто задание такое. Научиться передавать печать структуры по указателю.


Ошибка, выход за пределы массива.
Как правильно сделать ?
0
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.12.2011, 18:26 #7
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
#include <iostream>
#include <cstring>
 
typedef struct 
{
    int Article_number;
    int Quantity;
    char Decription[20];
    void print()
    {
        std::cout << "article number: " << Article_number << std::endl;
        std::cout << "article quantity: " << Quantity << std::endl;
        std::cout << "article decription: " << Decription << std::endl;
    }
} Article;
 
int main (int argc, char *argv[])
{
        Article* art = new Article; 
        art -> Article_number = 554; 
        strcpy(art -> Decription, "hi\0");
        art -> Quantity = 11;
        art -> print();
        std::cout << std::endl;
        delete art;
        return 0;
}
Добавлено через 29 секунд
Не вижу смысла выносить print из структуры.
1
Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
29.12.2011, 18:37  [ТС] #8
Цитата Сообщение от soon Посмотреть сообщение
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
#include <iostream>
#include <cstring>
 
typedef struct 
{
    int Article_number;
    int Quantity;
    char Decription[20];
    void print()
    {
        std::cout << "article number: " << Article_number << std::endl;
        std::cout << "article quantity: " << Quantity << std::endl;
        std::cout << "article decription: " << Decription << std::endl;
    }
} Article;
 
int main (int argc, char *argv[])
{
        Article* art = new Article; 
        art -> Article_number = 554; 
        strcpy(art -> Decription, "hi\0");
        art -> Quantity = 11;
        art -> print();
        std::cout << std::endl;
        delete art;
        return 0;
}
Добавлено через 29 секунд
Не вижу смысла выносить print из структуры.
Спасибо огромное. В двух словах что такое strcpy?
0
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.12.2011, 18:39 #9
Если просто написать
C++
1
2
3
char str[20];
//
str = "hi";
Компилятор обматерит вас и будет прав. strcpy копирует одну строку в другую. Подробнее тут
1
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.12.2011, 18:54 #10
легкая задача, чего столько вопросов
Если закрыть глаза на strcpy
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
#include <iostream>
 
using namespace std;
 
class reading {
private:
    int num;
    int count;
    char note[20];
public:
    reading (int val, int cnt, char s[20]) { num = val; count = cnt; strcpy (note, s); }
    friend ostream& operator<< (ostream& s, reading& d);  
};
 
ostream& operator<< (ostream& s, reading& d) {
        s << "article number: " << d.num << endl;
        s << "article quantity: " << d.count << endl;
        s << "article decription: " << d.note << endl;
        return s;
}
 
int main ()
{
    reading obj(10, 20, "ABC");
 
    cout << obj << endl;
 
    system ("pause");
    return 0;
}
Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от soon Посмотреть сообщение
Компилятор обматерит вас и будет прав. strcpy копирует одну строку в другую.
Логика в это есть. В данной случае мы имеем дело с указателями. (Слево указатель-коснтанта и менять значение мы не имеем право).

1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2011, 18:54
Привет! Вот еще темы с ответами:

Функция внутри структуры использует указатель, как поле этой структуры - C++
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp, есть файл GlobalItems.h, где хранятся глобальные...

Структуры, массивы структур (как можно присваивать(инициализировать) значения полям структуры) - C++
Есть у меня вот такая структура, например struct Subject { int cost; int Volume; }; Потом создаю экземпляр, Subject G; ...

Вывод структуры, строка как элемент структуры - C++
Описать структуру с именем TRAIN, содержащую следующие поля: □ название пункта назначения; □ номер поезда; □ время отправления. ...

Исследование структуры FILE или: что вообще можно выудить из этой структуры, указатель на которую мы получаем при открытии файла? - C++
Ничего нельзя. Итак, новичкам напомню, что после выполнения кода FILE* f= fopen (&quot;file.txt&quot;, &quot;w&quot;); в переменной f содержится...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.12.2011, 18:54
Ответ Создать тему
Опции темы

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