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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
MrDreher
1 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 71
#1

Нелогичная работа кода - C++

15.03.2014, 18:39. Просмотров 972. Ответов 35
Метки нет (Все метки)

Есть код. Но делает он совсем не то, что по идее должен.
Вот код:
1) файл main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//---------------------------------------------------------------------------
#include "LongNumber.hpp"
#include <iostream>
//---------------------------------------------------------------------------
using namespace std;
//---------------------------------------------------------------------------
int main()
{
        LongNumber a;
        a.setdata();
        a.view();
 
        system("pause");
        return 0;
}
//---------------------------------------------------------------------------
2) Файл LongNumber.hpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef LONGNUMBER_H
#define LONGNUMBER_H
class LongNumber
{
   private:
        char num[];
        int count;
        int base;
   public:
        LongNumber();
        void setdata();
        void view();
};
#endif
3) Файл LongNumber.hpp
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
#include "LongNumber.hpp"
#include <iostream>
//---------------------------------------------------------------------------
using namespace std;
//---------------------------------------------------------------------------
LongNumber::LongNumber()
{ }
//---------------------------------------------------------------------------
void LongNumber::setdata()
{
        printf("Enter the count: ");
        scanf("%d", &count);
        printf("Enter the number: ");
        scanf("%s",num);
        printf("Enter the base: ");
        scanf("%d",&base);
}
//---------------------------------------------------------------------------
void LongNumber::view()
{
        printf ("Number = %s \n", num);
        printf ("Count = %d \n", count);
        printf ("Base = %i \n", base);
}
//---------------------------------------------------------------------------
Есть задача: ввести с клавиатуры "число"(по сути строку, т.к. число не обязательно в 10чной системе счисления), и ввести основание системы счисления введенного числа. Это метод getdata(). Метод view() должен вывести данные в консоль.
Написал код, вроде должен работать. Но, в итоге получаются какие-то дивные вещи:
1) Вводишь count - все ок. Когда вводишь num то в count уже другие значения.
2) View выводит бред взятый непонятно откуда.

Почему код работает таким странным способом? Как исправить ошибку?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2014, 18:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нелогичная работа кода (C++):

Нелогичная работа mouse_event MOUSEEVENTF_MOVE - C++
void Draw() { HDC hdc = GetDC(HWND_DESKTOP); int cx = GetSystemMetrics(SM_CXSCREEN); int cy = GetSystemMetrics(SM_CYSCREEN); ...

Сортировка Шелла работа кода - C++
Ребята, вопрос возможно простой, но лично я не совсем понимаю что происходит #include &lt;cstdlib&gt; #include &lt;iostream&gt; using...

Работа с файлом в виде двоичного кода - C++
Здравствуйте. Продолжаю работу над внедрением в картинку TIFF текстового файла. Собственно говоря, задача №1 - считать текст из файла в...

Работа со стеками, объяснение кода программы - C++
Есть код программы (вырванный из целой проги кусок). В нем используются стеки. Помогите, пожалуйста, построчно (максимально подробно)...

Непонятна часть кода программы - работа с файлами - C++
Программа, выводящая символы из файла в обратном порядке. Часть кода: ..... std::ostringstream stream; stream &lt;&lt;...

Работа с двумерным массивом - разобрать строку кода - C++
Изучаю С++ по книге Шилдт Г.(базовый курс 3-е издание). В теме двумерных массивов столкнулся со строкой, над которой сколько бы не ломал...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.03.2014, 05:26 #16
Цитата Сообщение от MrDreher Посмотреть сообщение
и то что твой код может быть похож на бред сумасшедшего меня не удивит.
Не может, в отличие от кода ТС и твоего. Имя переменной должно говорить только о её назначении, а о типе должен говорить тип. У меня так и есть.
0
alkagolik
Заблокирован
16.03.2014, 06:07 #17
Цитата Сообщение от taras atavin Посмотреть сообщение
В этот "массив" он вообще ничего ввести не может, вводить просто некуда, так как размер равен нолю.
боян. в данном случае массива просто не как такового. Это Си наследованный синтаксис константного указателя. Это гавно вообще и крестов в частности. Убей себя крестами, пиши на си++.
__
Негодующий функциональщик.

Добавлено через 1 минуту
Цитата Сообщение от MrDreher Посмотреть сообщение
Если я в LongNumber.hpp заменяю "char *num" на "string num" при компиляции выдает ошибки:
1) Type name expected
2) Declaration missing
ты должен понимать разницу. Но ты ее не понимаешь и не знаешь. А если будешь пытаться писать программы на с++ то никогда и не узнаешь.
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.03.2014, 06:14 #18
Цитата Сообщение от alkagolik Посмотреть сообщение
в данном случае массива просто не как такового.
А почему по-твоему в кавычках?
0
alkagolik
Заблокирован
16.03.2014, 06:15 #19
Цитата Сообщение от taras atavin Посмотреть сообщение
А почему по-твоему в кавычках?
а кто туда сегодня где-то?
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.03.2014, 06:15 #20
Цитата Сообщение от alkagolik Посмотреть сообщение
А если будешь пытаться писать программы на с++ то никогда и не узнаешь.
Да ну! А на чём же её ещё узнавать? Неужели на бейсике, где char* просто не предусмотрен? Или ваще не прологе, где нет и string?
0
alkagolik
Заблокирован
16.03.2014, 06:23 #21
Цитата Сообщение от taras atavin Посмотреть сообщение
Да ну! А на чём же её ещё узнавать?
боянишь, тётка. Вырвал фразу из контекста... Отлов екзепшнс изучается абстрактно от языков программирования. Но... в известной литературе используется как правило... ДА!, БЛДЖАД, СИ!.
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.03.2014, 07:45 #22
А при чём здесь городская юаня, когда речь о различии между типами? Соответственно надо писать на языке, знакомом с обоими, причём, поддержка только равной, но в другом синтаксисе не подходит.
0
alkagolik
Заблокирован
16.03.2014, 07:49 #23
Цитата Сообщение от taras atavin Посмотреть сообщение
А при чём здесь городская юаня, когда речь о различии между типами?
при том что сам приплюснутый язык не дает (точнее снимает) обязанность контроля памяти.
Цитата Сообщение от taras atavin Посмотреть сообщение
Соответственно надо писать на языке, знакомом с обоими.
Надо забыть кресты как страшный сон.
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.03.2014, 07:51 #24
Цитата Сообщение от alkagolik Посмотреть сообщение
Отлов екзепшнс изучается абстрактно от языков программирования. Но... в известной литературе используется как правило... ДА!, БЛДЖАД, СИ!.
Не знающий ни классов (а один из обсуждаемых типов - класс), ни экзепшенов.

Добавлено через 1 минуту
Цитата Сообщение от alkagolik Посмотреть сообщение
Надо забыть кресты как страшный сон.
Согласен, кресты надо забыть. В отличие от плюсов.
0
alkagolik
Заблокирован
16.03.2014, 07:51 #25
Цитата Сообщение от taras atavin Посмотреть сообщение
Не знающий ни классов, ни экзепшенов.
Привет!. Я так и понял. Квадратные уравнения давно научился решать?
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.03.2014, 07:51 #26
Цитата Сообщение от alkagolik Посмотреть сообщение
при том что сам приплюснутый язык не дает (точнее снимает) обязанность контроля памяти.
Это как? Плюсы - не решётка, на которой попытки контроля памяти бесполезны.
0
alkagolik
Заблокирован
16.03.2014, 07:55 #27
Цитата Сообщение от taras atavin Посмотреть сообщение
(а один из обсуждаемых типов - класс
ты инопланетный? класс не есть тип. Это концепт, один из подходов к проектированию в информатике (если коротко). Ты вообще в теме? Сомневаюсь. ЛОЛ

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
Плюсы - не решётка, на которой попытки контроля памяти бесполезны.
что еще за боян? наследование Си дает полный контроль (и доступ).
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.03.2014, 07:58 #28
Цитата Сообщение от alkagolik Посмотреть сообщение
ты инопланетный? класс не есть тип. Это концепт, один из подходов к проектированию в информатике (если коротко). Ты вообще в теме?
Во-первых любой тип - концепт, способ интерпретации байтов, потому на асме их и нет, а есть только разрядности. А во-вторых класс в программировании - совсем не то, как его переносят в область моделирования реального мира, не любая категория чего угодно, а как раз тип, объединяющий в одной сущности данные и операции с ними. string объединяет в одной сущности формат строки и операции над строками в этом формате и является классом, а указатель - это только место для хранения адреса. И контроль памяти здесь - лишь один из нюансов, не более.
0
alkagolik
Заблокирован
16.03.2014, 07:59 #29
перефразирую .. сформулирую:
наследование концепта "с" (абсолютный доступ) приводит к "тираниии".
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.03.2014, 08:02 #30
Цитата Сообщение от alkagolik Посмотреть сообщение
Привет!. Я так и понял. Квадратные уравнения давно научился решать?
В прошлом веке.

Добавлено через 58 секунд
Цитата Сообщение от alkagolik Посмотреть сообщение
что еще за боян? наследование Си дает полный контроль (и доступ).
Какое наследование без классов?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2014, 08:02
Привет! Вот еще темы с ответами:

Сравнить каждое слово с предыдущи. Непонятна работа кода - C++
Очень стыдно, но не могу не спросить. Вот код: string previous = &quot; &quot;; string current; while (cin &gt;&gt; current) { if (previous ==...

Работа в Visual Studio 2015 - как добавить файлы исходного кода и заголовочные файлы? - C++
Приветствую всех! Столкнулся с тем, что решая задачи по книге Лафоре про графику, не смог добавить файлы .h и .cpp, скачав их с одной из...

Вынести основную часть кода кода в отдельную функцию - C++
помогите пожалуйста переделать это на функцию... #include &lt;locale.h&gt; #include &lt;conio.h&gt; int main() { setlocale(0,&quot;&quot;); float...

Нелогичная работа простейших арифметических операций - Visual Basic .NET
Я не понимаю почему так работает сложение. Dim file3 = New StreamWriter(&quot;3.txt&quot;) For i = 0 To n2 - 1 Dim Sum As...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.03.2014, 08:02
Закрытая тема Создать тему
Опции темы

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