Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
grrrrr
45 / 45 / 13
Регистрация: 21.04.2009
Сообщений: 265
1

Непонятный вывод структуры через функцию

15.12.2010, 17:22. Просмотров 782. Ответов 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
28
29
30
31
32
33
34
35
36
37
38
39
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
struct st 
{
    char name[10];
    char surname[15];
    int grade;
};
 
void vvod(st one);
void vivod(st w);
 
int main(int argc, char *argv[])
{
    st myst;
    cout << "Zapolnite structuru\n";
    vvod(myst);    
    cout << "\n";
    vivod(myst);
        
          
    system("PAUSE");
    return EXIT_SUCCESS;
}
void vvod(st one)
{
    cin >> one.name;
    cin >> one.surname;
    cin >> one.grade;
}
void vivod(st w)
{
    cout << w.name;
    cout << w.surname;
    cout << w.grade;
}
наверное это потому что каждый раз создается новая копия структуры. Может надо как то через указатаели?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2010, 17:22
Ответы с готовыми решениями:

Нахождение основных значений оформить через функцию RESHENIE(), ввод данных и вывод на печать через функцию MAIN()
а помогите теперь эту задачку #include &lt;iostream&gt; int main() { int last...

Обработка структуры через функцию
подскажите пожулуйста как реализовать обработку структуры через функцию. Нужно...

Заполнение структуры через функцию
Здравствуйте помогите пжл, нужно реализовать заполнение структуры через функцию...

Передача поля структуры через функцию
Здравствуйте! У меня следующий вопрос: можно как-нибудь передать поле структуры...

Вывод структуры через псевдографику
Можно ли через объект cout задавать количество выводимых символов(не чисел...

7
asics
Freelance
Эксперт С++
2858 / 1793 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
15.12.2010, 17:27 2
grrrrr, Мб лучше так ?
C++
1
2
3
4
5
6
7
8
9
void vvod(st one)
{
    cin.getline(one.name, 9);
    cin.sync();//Очищаем буфер стандартного ввода
    cin.getline(one.surname, 14);
    cin.sync();
    cin >> one.grade;
    cin.sync();
}
1
grrrrr
45 / 45 / 13
Регистрация: 21.04.2009
Сообщений: 265
15.12.2010, 17:54  [ТС] 3
asics, покажите пожалуйста, как можно заполнить и вывести на экран, но только через указатели.

C++
1
2
3
4
5
6
7
8
9
void vvod(st one)
{
    cin.getline(one.name, 9);
    cin.sync();//Очищаем буфер стандартного ввода
    cin.getline(one.surname, 14);
    cin.sync();
    cin >> one.grade;
    cin.sync();
}
скомпилил, проблема осталась.
0
asics
Freelance
Эксперт С++
2858 / 1793 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
15.12.2010, 18:14 4
grrrrr,
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
#include <cstdlib>
#include <iostream>
#include <cstring>
 
using namespace std;
 
struct st
{
    char name[10];
    char surname[15];
    int grade;
};
 
void vvod(st *one);
void vivod(st *w);
 
int main(int argc, char *argv[])
{
    st *myst;
    cout << "Zapolnite structuru\n";
    vvod(myst);
    cout << "\n";
    vivod(myst);
 
 
    system("PAUSE");
    return 0;
}
void vvod(st *one)
{
    cin.getline(one->name, 9);
    cin.sync();
    cin.getline(one->surname, 14);
    cin.sync();
    cin >> one->grade;
    cin.sync();
}
void vivod(st *w)
{
    for(int i = 0; i < strlen(w->name); ++i)
        cout << w->name[i];
    cout << '\n';
    for(int i = 0; i < strlen(w->surname); ++i)
        cout << w->surname[i];
    cout << '\n' << w->grade;
}
0
grrrrr
45 / 45 / 13
Регистрация: 21.04.2009
Сообщений: 265
15.12.2010, 18:32  [ТС] 5
asics, компилируется нормально, при вводе первого слова, программа принудительно закрывается. Виндовс приносит свои извенения. Что то в коде не так, у меня wxDev-CPP
0
asics
Freelance
Эксперт С++
2858 / 1793 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
15.12.2010, 18:34 6
grrrrr, Хм, gcc молчит
0
ramzay
3 / 3 / 1
Регистрация: 17.02.2013
Сообщений: 44
27.03.2013, 00:59 7
а если мне надо вывести массив структур?(через функцию)
как быть?
0
UnsKneD
алкокодер
155 / 151 / 41
Регистрация: 27.12.2012
Сообщений: 550
27.03.2013, 02:35 8
ramzay,
C++
1
2
3
f( struct &s ){
    for( int i = 0; i<N; i++){ cout << s[i].qqq; }
}
Добавлено через 6 минут
asics, вы не выделили память для структуры.
Цитата Сообщение от asics Посмотреть сообщение
C++
1
st *myst = new st;
Добавлено через 7 минут
GCC хоть и позволяет её не выделять, вроде сам может её выделить, но во всяких студиях такое не прокатывает.
0
27.03.2013, 02:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2013, 02:35

Вывод элементов структуры через cout
Здравствуйте! Подскажите, почему в моём простом примере при попытке вывести...

Вывод через структуры ,как сделать?
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; class drob {...

Запись в файл и вывод структуры через под программы
Помогите пожалуйста создал структуру которая содержит название игрушек,страну...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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