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

Структуры. Ошибка в коде задачи. - C++

Восстановить пароль Регистрация
 
Sniti01
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 50
21.11.2012, 17:40     Структуры. Ошибка в коде задачи. #1
Сделал лабораторную не пойму в чем ошибка.
Задание такое:
Номер телефона, например (212) 767-8900, можно условно разделить на три части: код города (212), номер телефонной станции (767) и номер абонента (8900). Написать программу с использованием структуры, поз¬воляющую раздельно хранить эти три части телефонного номера. Назвать структуру phone. Создайте две структурные переменные типа phone. Инициализацию одной из них произвести самостоятельно, а значения для другой запросите с клавиатуры. Затем вывести содержимое обеих переменных на экран. Результат работы программы должен выглядеть приблизитель¬но так:

Введите код города, номер станции и номер абонента: 415 555 1212
Мой номер (212) 767-8900
Ваш номер (415) 555-1212

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
#include "stdafx.h"
#include "iostream"
using namespace std;
 
struct phone{
    int kod  ;
    int nom ;
    int mom_abon ;
};
 
struct new_phone{
    int kod1;
    int nom1;
    int mom_abon1;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "rus" );
    phone object;
    new_phone new_object;
    cout << "Введите код города, номер станции и номер абонента: ";
    int mas_all[11];
    cin >> mas_all[11];
 
    int mas_a[2];
    mas_a[0] = mas_all[0];
    mas_a[1] = mas_all[1];
    mas_a[2] = mas_all[2];
    new_object.kod1 = mas_a[2];
 
    int mas_b[2];
    mas_b[0] = mas_all[4];
    mas_b[1] = mas_all[5];
    mas_b[2] = mas_all[6];
    new_object.nom1 = mas_b[2];
 
    int mas_c[3];
    mas_c[0] = mas_all[8];
    mas_c[1] = mas_all[9];
    mas_c[2] = mas_all[10];
    mas_c[3] = mas_all[11];
    new_object.mom_abon1= mas_b[2];
 
    object.kod = 123;
    object.nom = 456;
    object.mom_abon = 7890;
    cout << "Мой номер телефона : " << object.kod << " " << object.nom << " " << object.mom_abon << endl;
    
    cout << "Ваш номер : " << new_object.kod1 << " " << new_object.nom1 << " " << new_object.mom_abon1 << endl;
 
    system("pause");
    return 0;
}
Результат выходит такой:

Введите код города, номер страницы и номер абонента: 323 456 7090
Мой номер телефона : 123 456 7890
Ваш номер : -858993460 -858993460 -858993460
Буду рад любо помощи)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.11.2012, 17:46     Структуры. Ошибка в коде задачи. #2
Размер массивов не соответствует индексам. Если:
C++
1
int mas_a[2];
, то это массив на два элемента (mas_a[0], mas_a[1]), int mas_b[2] - массив на два элемента(mas_b[0], mas_b[1]), int mas_c[3] - массив на три элемента(mas_c[0], mas_c[1], mas_c[2]).
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
21.11.2012, 17:50     Структуры. Ошибка в коде задачи. #3
Цитата Сообщение от Sniti01 Посмотреть сообщение
int mas_all[11];
cin >> mas_all[11];
вы создаете массив из 11-ти элементов, затем вводите значение 11-го элемента, остальные 10 остаются пустыми
Цитата Сообщение от Sniti01 Посмотреть сообщение
int mas_a[2];
mas_a[0] = mas_all[0];
mas_a[1] = mas_all[1];
mas_a[2] = mas_all[2];
new_object.kod1 = mas_a[2];
int mas_b[2];
mas_b[0] = mas_all[4];
mas_b[1] = mas_all[5];
mas_b[2] = mas_all[6];
new_object.nom1 = mas_b[2];
int mas_c[3];
mas_c[0] = mas_all[8];
mas_c[1] = mas_all[9];
mas_c[2] = mas_all[10];
mas_c[3] = mas_all[11];
new_object.mom_abon1= mas_b[2];
тут вы создаете новые массивы и присваиваете им пустые значения, эти же значения вы присваиваете элементам структуры

Цитата Сообщение от Sniti01 Посмотреть сообщение
int mas_c[3];
mas_c[0] = mas_all[8];
mas_c[1] = mas_all[9];
mas_c[2] = mas_all[10];
mas_c[3] = mas_all[11];
new_object.mom_abon1= mas_b[2];
в этой части вы видимо хотели присвоить элементу структуры массив mass_c, а присвоили mass_b
Sniti01
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 50
21.11.2012, 17:53  [ТС]     Структуры. Ошибка в коде задачи. #4
Все равно ошибка такая как и была.
int mas_a[2], по моему имеет три элемента mas_a[0], mas_a[1], mas_a[2]
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.11.2012, 18:27     Структуры. Ошибка в коде задачи. #5
Цитата Сообщение от Sniti01 Посмотреть сообщение
Все равно ошибка такая как и была.
int mas_a[2], по моему имеет три элемента mas_a[0], mas_a[1], mas_a[2]
Могу только повторить то, что писал во втором посте, а там как знаете. При объявлении массива, в квадратных скобках, указывается количество элементов массива.
Sniti01
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 50
21.11.2012, 21:50  [ТС]     Структуры. Ошибка в коде задачи. #6
Понял, невнимательно прочитал. Спасибо вам за помощь! сейчас буду исправлять.

Добавлено через 23 минуты
А если сделать по другому, (так вроде по проще):
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
#include "stdafx.h"
#include "iostream"
using namespace std;
 
struct phone{
    int kod  ;
    int nom ;
    int mom_abon ;
};
 
struct new_phone{
    int kod1;
    int nom1;
    int mom_abon1;
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "rus" );
    phone object;
    new_phone new_object;
    cout << "Введите код города, номер станции и номер абонента: ";
    cin >> new_object.kod1;
    cin >> new_object.nom1;
    cin >> new_object.mom_abon1;
 
    object.kod = 123;
    object.nom = 456;
    object.mom_abon = 7890;
    cout << "Мой номер телефона : " << object.kod << " " << object.nom << " " << object.mom_abon << endl;
    
    cout << "Ваш номер : " << new_object.kod1 << " " << new_object.nom1 << " " << new_object.mom_abon1 << endl;
 
    system("pause");
    return 0;
}
только по заданию мне надо что бы номер вводился в одну строчку и через пробел.Подскажите можно ли так сделать в этой программе, а ели можно то как?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.11.2012, 23:35     Структуры. Ошибка в коде задачи. #7
Цитата Сообщение от Sniti01 Посмотреть сообщение
только по заданию мне надо что бы номер вводился в одну строчку и через пробел.Подскажите можно ли так сделать в этой программе, а ели можно то как?
У вас так и будет работать.
Sniti01
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 50
22.11.2012, 00:44  [ТС]     Структуры. Ошибка в коде задачи. #8
у меня работает вот как:
Введите код города, номер станции и номер абонента: 415
555
1212
.......
А надо:
Введите код города, номер станции и номер абонента: 415 555 1212
.......
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.11.2012, 02:12     Структуры. Ошибка в коде задачи. #9
Цитата Сообщение от Sniti01 Посмотреть сообщение
Введите код города, номер станции и номер абонента: 415 555 1212
Вот так наберите (одной строкой) и в конце Enter, и всё будет как нужно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2012, 16:57     Структуры. Ошибка в коде задачи.
Еще ссылки по теме:

C++ Ошибка в коде
Вывод структуры в файл. Исправить ошибки в коде C++
Программа из учебника Прата. Структуры в многофайловом приложении. Исправить недочеты в коде C++

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

Или воспользуйтесь поиском по форуму:
Sniti01
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 50
22.11.2012, 16:57  [ТС]     Структуры. Ошибка в коде задачи. #10
Спасибо за помощь!
Yandex
Объявления
22.11.2012, 16:57     Структуры. Ошибка в коде задачи.
Ответ Создать тему
Опции темы

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