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

Нет вывода и неправильная запись (запись) - C++

Восстановить пароль Регистрация
 
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
19.10.2012, 09:33     Нет вывода и неправильная запись (запись) #1
Доброго времени суток!

Есть программка записывающая студентов.
При записи ФИО через пробел, происходит ошибка.
При выводе информации, происходит ошибка.

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
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
 
struct sport
{
 char fio[30];
 char vid[30];
 char fak[30];
 char spc[30];
 int lvl;
};
 
void ChangeNumber(sport*obj,int n)
{
    int number;
    cout<<"\n\n Введите номер для изменения: ";cin>>number;
    cout<<"Введите новые данные Ф.И.О.: ";cin>>obj[number].fio;
    cout<<"Введите новые данные о спорте: ";cin>>obj[number].vid;
    cout<<"Введите новуе данные о факультете: ";cin>>obj[number].fak;
    cout<<"Введите новуе данные о специальности: ";cin>>obj[number].spc;
    cout<<"Введите новые данные о возрасте: ";cin>>obj[number].lvl;
    cout<<endl;
}
 
int main ()
{
setlocale(0,"Rus");
int n,i;
printf("\n Введите кол-во студентов => ");
scanf("%d",&n);
sport* mas_struct=new sport[n];
 
for (i=0;i<n;i++)
{
    cout<<"Введите данные Ф.И.О.: ";cin>>mas_struct[i].fio;
    cout<<"Введите данные о спорте: ";cin>>mas_struct[i].vid;
    cout<<"Введите данные о факультете: ";cin>>mas_struct[i].fak;
    cout<<"Введите данные о специальности: ";cin>>mas_struct[i].spc;
    cout<<"Введите данные о возрасте: ";cin>>mas_struct[i].lvl;
}
 
printf("\n    Ф.И.О.   |   Спорт   |  Факультет  |  Специальность  |  Возраст  ");
for (i=0;i<n;i++)
printf("\n  %s  %s  %s  %s %d",mas_struct[i].fio,mas_struct[i].vid,mas_struct[i].fak,cin>>mas_struct[i].spc,mas_struct[i].lvl);
 
ChangeNumber(mas_struct,n);
 
getch();
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
19.10.2012, 10:00     Нет вывода и неправильная запись (запись) #2
Для ввода строки, содержащей пробелы, используйте функцию std::istream::getline().
C++
1
cin.getline( obj[number].fio, 30 );
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
20.10.2012, 21:31  [ТС]     Нет вывода и неправильная запись (запись) #3
Не сработало.
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
20.10.2012, 22:22     Нет вывода и неправильная запись (запись) #4
вот немного переделанный с использованием string вместо char
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
#include <iostream>
#include <string>
using namespace std;
 
struct sport
{
 string fio;
 string vid;
 string fak;
 string spc;
 int lvl;
};
 
void ChangeNumber(sport * obj, int n)
{
    int number;
    cout << endl;
    cout << "Ââåäèòå Г*îìåð äëÿ èçìåГ*ГҐГ*ГЁГї: ";
    cin >> number;
    cin.get();
    cout << "Ââåäèòå Г*îâûå Г¤Г*Г*Г*ûå Г”.Г€.ГЋ.:: ";
    getline(cin, obj[number].fio);
    cout<<"Ââåäèòå Г*îâûå Г¤Г*Г*Г*ûå Г® ñïîðòå: ";
    getline(cin, obj[number].vid);
    cout<<"Ââåäèòå Г*îâûå Г¤Г*Г*Г*ûå Г® ГґГ*êóëüòåòå: ";
    getline(cin, obj[number].fak);
    cout<<"Ââåäèòå Г*îâûå Г¤Г*Г*Г*ûå Г® ñïåöèГ*ëüГ*îñòè: ";
    getline(cin, obj[number].spc);
    cout<<"Ââåäèòå Г*îâûå Г¤Г*Г*Г*ûå Г® âîçðГ*Г±ГІГҐ: ";
    cin >> obj[number].lvl;
    cout << endl;
}
 
int main ()
{
    system("chcp 1251");
 
    int n,i;
    cout << "Ââåäèòå êîë-ГўГ® ñòóäåГ*òîâ => ";
    cin >> n;
    cin.get();
 
    sport* mas_struct=new sport[n];
 
    for (i=0; i < n; i++)
    {
        cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г”.Г€.ГЋ.: ";
        getline(cin, mas_struct[i].fio);
        cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г® ñïîðòå: ";
        getline(cin, mas_struct[i].vid);
        cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г® ГґГ*êóëüòåòå: ";
        getline(cin, mas_struct[i].fak);
        cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г® ñïåöèГ*ëüГ*îñòè: ";
        getline(cin, mas_struct[i].spc);
        cout << "Ââåäèòå Г¤Г*Г*Г*ûå Г® âîçðГ*Г±ГІГҐ: ";
        cin >> mas_struct[i].lvl;
    }
 
    cout << endl;
 
    for (i = 0; i < n; i++)
    {
        cout << "Г”.Г€.ГЋ.: " << mas_struct[i].fio << endl;
        cout << "Ñïîðò: " << mas_struct[i].vid << endl;
        cout << "Г”Г*êóëüòåò: " << mas_struct[i].fak << endl;
        cout << "ÑïåöèГ*ëüГ*îñòü: " << mas_struct[i].spc << endl;
        cout << "ÂîçðГ*Г±ГІ: " << mas_struct[i].lvl;
    }
    ChangeNumber(mas_struct,n);
 
    system("pause");
    return 0;
}
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
21.10.2012, 20:03  [ТС]     Нет вывода и неправильная запись (запись) #5
StanislavUA, вариант хороший но, если ввести к примеру 2 студента и задать параметры для первого, то у второго пропускается данные о ФИО... как исправить?
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
21.10.2012, 20:09     Нет вывода и неправильная запись (запись) #6
Цитата Сообщение от StanislavUA Посмотреть сообщение
int n,i;
* * cout << "Введите кол-во студентов => ";
* * cin >> n;
* * cin.get();
уберите здесь cin.get() и вставьте его после for
C++
1
2
3
4
 for (i=0; i < n; i++)
    {
          cin.get()
          *************
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
21.10.2012, 20:35  [ТС]     Нет вывода и неправильная запись (запись) #7
Осталась последняя проблема: вместо русских букв выводятся непонятные символы.
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
21.10.2012, 20:38     Нет вывода и неправильная запись (запись) #8
кликаете пкм на консоли, выбираете пункт "Умолчания" и ставите шрифт Consolas, после этого если в программе есть строчка system("chcp 1251") программа отлично работает с русским языком(ввод/вывод)
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
21.10.2012, 20:43  [ТС]     Нет вывода и неправильная запись (запись) #9
Работаю в Dev C++ не могу найти такого.
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
21.10.2012, 20:49     Нет вывода и неправильная запись (запись) #10
для этого не обязательно это делать в компиляторе
пуск->cmd->enter
Миниатюры
Нет вывода и неправильная запись (запись)  
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
21.10.2012, 20:57  [ТС]     Нет вывода и неправильная запись (запись) #11
Во время изменения параметров программа останавливается и начинается поиск решения.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2012, 21:04     Нет вывода и неправильная запись (запись)
Еще ссылки по теме:

C++ С++ запись в файл, которого нет
cout, два стека, нет вывода из второго C++
C++ Нет вывода в консоль
C++ Неправильная запись в файл

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

Или воспользуйтесь поиском по форуму:
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
22.10.2012, 21:04  [ТС]     Нет вывода и неправильная запись (запись) #12
Поможет кто?
Yandex
Объявления
22.10.2012, 21:04     Нет вывода и неправильная запись (запись)
Ответ Создать тему
Опции темы

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