Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
7 / 7 / 3
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
1

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

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

Author24 — интернет-сервис помощи студентам
Условие задачи:

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

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

Дополнение: Допустим p указатель структуры. Это позволит вывести печать полей таким образом (*p).fieldname or p->fieldname.
Помогите, пожалуйста, с как реализовать печать вообще не представляю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.12.2011, 01:17
Ответы с готовыми решениями:

Понятие структуры данных. Элементарные структуры данных. Простые структуры данных
Понятие структуры данных. Элементарные структуры данных. Простые структуры данных: методы...

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

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

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

9
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
29.12.2011, 01:20 2
Рекомендую начать с изучения структур.
1
7 / 7 / 3
Регистрация: 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
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.12.2011, 18:15 4
Цитата Сообщение от Leeto Посмотреть сообщение
art.Decription[20] = ('H','i')
Чего вы пытались добиться этой строкой?
1
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
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
7 / 7 / 3
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
29.12.2011, 18:24  [ТС] 6
Цитата Сообщение от soon Посмотреть сообщение
Чего вы пытались добиться этой строкой?
Хочу чтобы массив выводил не более 20 символов, как по заданию... в конкретном случаю хочу чтобы он "Hi" написал.

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


Ошибка, выход за пределы массива.
Как правильно сделать ?
0
2554 / 1319 / 178
Регистрация: 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
7 / 7 / 3
Регистрация: 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
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.12.2011, 18:39 9
Если просто написать
C++
1
2
3
char str[20];
//
str = "hi";
Компилятор обматерит вас и будет прав. strcpy копирует одну строку в другую. Подробнее тут
1
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
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
29.12.2011, 18:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2011, 18:54
Помогаю со студенческими работами здесь

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

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

Функция внутри структуры использует указатель, как поле этой структуры
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp, есть файл...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru