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

выводит не правильные символы - C++

Восстановить пароль Регистрация
 
milkk
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 3
29.06.2013, 18:21     выводит не правильные символы #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
//
 
#include "stdafx.h"
#include "stdio.h"
#include <iostream>
 
using namespace std;
 
class A
{
public:
    char name[20];
    int vozr;
 
    void vvod()
    {
        cout<<"vvedite imya";
        cin>>name;
        cout<<"vvedite vozrast";
        cin>>vozr;
    }
    //A(){}
 
    void vivod()
    {
        printf_s("\n imya: %s\n vozrast: %d",name,vozr);
    }
    
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    cout<<"vvedite kolichestvo \n";
    const int g=3;
    A a[g];
    A d;
 for (int i=0;i<g;i++)
 {
     cout<<"Vvedite imya"<<endl;
     cin>>d.name;
     cout<<"Vvedite vozr"<<endl;
     cin>>d.vozr;
 }
 cout<<"spisok";
 for (int i=0;i<g;i++)
 {
     a[i].vivod();
 }
 
 
    return 0;
}
вот результат работы..
выводит не правильные символы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2013, 18:21     выводит не правильные символы
Посмотрите здесь:

C++ вводится строка любых символов, выводит сначала все символы, потом цифры
static_cast<char>() не выводит некоторые символы C++
C++ cout Выводит не те символы
C++ Создайте процедуру, которая выводит строку, исключая символы, расположенные на нечетных позициях
C++ Составить программу, которая выводит на экран все символы, расположенные после первого символа'':''
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DPS
 Аватар для DPS
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 107
Завершенные тесты: 1
29.06.2013, 18:49     выводит не правильные символы #2
Как-то так, наверное)

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
#include <iostream>
 
using namespace std;
 
class A
{
private:                //переменные обычно объявляются закрытыми
    char name[20];          
    int vozr;
 
public:             
    //необходимо объявить конструктор и деструктор 
    A()
    {
        /*cout << "Конструктор класса" << endl;*/
    };
 
    ~A()
    {
        /*cout << "Деструктор класса" << endl;*/
    };
 
    void vvod()
    {
        cout<<"vvedite imya:";
        cin>>name;
 
        cout<<"vvedite vozrast:";
        cin>>vozr;
 
        cout << endl;       
    }
 
    void vivod() const
    {
       cout << "imya:" << name << endl;
       cout << "vozrast:" << vozr << endl << endl;
    }
 
}; 
 
 
 
int main()
{
    size_t amount;          //кол-во объектов
 
    cout<<"vvedite kolichestvo:";
    cin >> amount;
 
    A *a = new A[amount];   //выделяем память
 
    size_t i;   //переменная цикла
 
    for (i=0; i<amount; i++)    //получаем данные
    {
        a[i].vvod();    
    }
 
    cout << endl;
    cout<<"spisok" << endl;;
 
    for (i=0; i<amount; i++)    //выводим на экран
    {
        a[i].vivod();
    }
 
    delete [] a;        //чистим память
 
    return 0;
}
Taranga
 Аватар для Taranga
11 / 11 / 1
Регистрация: 29.04.2012
Сообщений: 56
29.06.2013, 19:13     выводит не правильные символы #3
@DPS, Для него это уж слишком. А ему ошибку так и не объяснил.
@milkk,
C++
1
2
3
4
5
6
7
 for (int i=0;i<g;i++)
 {
     cout<<"Vvedite imya"<<endl;
     cin>>d.name;
     cout<<"Vvedite vozr"<<endl;
     cin>>d.vozr;
 }
Ошибка в том, что ты записывал не в массив. У тебя массив A a[g];
Цикл должен был выглядеть так:
C++
1
2
3
4
5
6
7
for(int i = 0; i < g; i++)
{
     cout<<"Vvedite imya"<<endl;
     cin>>a[i].name;
     cout<<"Vvedite vozr"<<endl;
     cin>>a[i].vozr;
}
А каракули, которые ты видел, это следствие того, что массив ты не инициализировал(не присвоил ему значения)
milkk
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 3
29.06.2013, 19:34  [ТС]     выводит не правильные символы #4
спасибо, буду дальше осваивать классы)

Добавлено через 13 минут
Цитата Сообщение от DPS Посмотреть сообщение
Как-то так, наверное)

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
#include <iostream>
 
using namespace std;
 
class A
{
private:                //переменные обычно объявляются закрытыми
    char name[20];          
    int vozr;
 
public:             
    //необходимо объявить конструктор и деструктор 
    A()
    {
        /*cout << "Конструктор класса" << endl;*/
    };
 
    ~A()
    {
        /*cout << "Деструктор класса" << endl;*/
    };
 
    void vvod()
    {
        cout<<"vvedite imya:";
        cin>>name;
 
        cout<<"vvedite vozrast:";
        cin>>vozr;
 
        cout << endl;       
    }
 
    void vivod() const
    {
       cout << "imya:" << name << endl;
       cout << "vozrast:" << vozr << endl << endl;
    }
 
}; 
 
 
 
int main()
{
    size_t amount;          //кол-во объектов
 
    cout<<"vvedite kolichestvo:";
    cin >> amount;
 
    A *a = new A[amount];   //выделяем память
 
    size_t i;   //переменная цикла
 
    for (i=0; i<amount; i++)    //получаем данные
    {
        a[i].vvod();    
    }
 
    cout << endl;
    cout<<"spisok" << endl;;
 
    for (i=0; i<amount; i++)    //выводим на экран
    {
        a[i].vivod();
    }
 
    delete [] a;        //чистим память
 
    return 0;
}
Может подскажите как вывести тех у кого возраст меньше 20 например
Taranga
 Аватар для Taranga
11 / 11 / 1
Регистрация: 29.04.2012
Сообщений: 56
29.06.2013, 19:39     выводит не правильные символы #5
Могу посоветовать неплохие видео уроки от Дениса Маркова.
Кликните здесь для просмотра всего текста

Не по теме:

YouTube->Denis Markov



Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
for (int i = 0; i < g; ++i)
{
    if (a[i].vozr < 20)
    {
        cout << a[i].name<<endl;
        cout << a[i].vozr<<endl;
    }
}
milkk
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 3
29.06.2013, 19:40  [ТС]     выводит не правильные символы #6
Цитата Сообщение от Taranga Посмотреть сообщение
Могу посоветовать неплохие видео уроки от Дениса Маркова.
Кликните здесь для просмотра всего текста

Не по теме:

YouTube->Denis Markov



Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
for (int i = 0; i < g; ++i)
{
    if (a[i].vozr < 20)
    {
        cout << a[i].name<<endl;
        cout << a[i].vozr<<endl;
    }
}
спасибо большое)
Yandex
Объявления
29.06.2013, 19:40     выводит не правильные символы
Ответ Создать тему
Опции темы

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