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

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

Войти
Регистрация
Восстановить пароль
 
Supernatural
301 / 156 / 29
Регистрация: 22.11.2010
Сообщений: 1,552
#1

Работа с динамического массивом - ошибка при попытке ввода - C++

18.06.2014, 22:44. Просмотров 246. Ответов 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <vcl.h>
#include <iostream.h>
#include <string.h>
#pragma hdrstop
#pragma argsused
using namespace std;
class ECM
{
char* type;
float Ghz;
int Memory;
float Gb;
public:
ECM(); //ГЄГ®Г*ñòðóêòîð ГЎГҐГ§ ГЇГ*Г°Г*ìåòðîâ
ECM(char* TYPE,float GHZ,int MEMORY,float GB);//ГЄГ®Г*ñòðóêòîð Г± ГЇГ*Г°Г*ìåòðГ*ìè
ECM(const ECM&); //ГЄГ®Г*ñòðóêòîð êîïèðîâГ*Г*ГЁГї
~ECM();          //äåñòðóêòîð
void settype(char* temp);
void setghz(float temp);
void setmemory(int temp);
void setgb(float temp);
char* gettypecpu();
float getghz();
int getmemory();
float getgb();
};
//------------------------------------------------------------------------------
void ECM::settype(char* temp)   //ГіГ±ГІГ*Г*îâèòü ГІГЁГЇ ïðîöåññîðГ*
{
type=temp;
}
//------------------------------------------------------------------------------
void ECM::setghz(float temp)    //ГіГ±ГІГ*Г*îâèòü Г·Г*ñòîòó ïðîöåññîðГ*
{
Ghz=temp;
}
//------------------------------------------------------------------------------
void ECM::setmemory(int temp)   //ГіГ±ГІГ*Г*îâèòü îáúåì ГЇГ*ìÿòè
{
Memory=temp;
}
//------------------------------------------------------------------------------
void ECM::setgb(float temp)     //ГіГ±ГІГ*Г*îâèòü îáúåì Г*Г*êîïèòåëÿ
{
Gb=temp;
}
//------------------------------------------------------------------------------
ECM::~ECM()                     //óäëèòü îáúåêò
{
cout<<"ГЋГЎГєГҐГЄГІ ГіГ¤Г*ëåГ*";
}
//------------------------------------------------------------------------------
ECM::ECM(char* TYPE,float GHZ,int MEMORY,float GB) //ГЄГ®Г*ñòðóêòîð Г± ГЇГ*Г°Г*ìåòðГ*ìè
{
type=TYPE;
Ghz=GHZ;
Memory=MEMORY;
Gb=GB;
}
//------------------------------------------------------------------------------
ECM::ECM(){ //ГЄГ®Г*ñòðóêòîð ГЎГҐГ§ ГЇГ*Г°Г*ìåòðîâ
type=NULL;
Ghz=0;
Memory=0;
Gb=0;}
//------------------------------------------------------------------------------
ECM::ECM(const ECM &E)   //ГЄГ®Г*ñòðóêòîð êîïèðîâГ*Г*ГЁГї
{
if (E.type) {type= new char [strlen(E.type)+1]; strcpy(type, E.type);}
else type=0;
type=E.type;Ghz=E.Ghz;Memory=E.Memory;Gb=E.Gb;
}                       
//------------------------------------------------------------------------------
char* ECM::gettypecpu() {return type;}
float ECM::getghz() {return Ghz;}
int ECM::getmemory() {return Memory;}
float ECM::getgb() {return Gb;}
void main()
{
char* ctemporary;
int itemporary;
float ftemporary;
int i,n=4;
ECM *pECM[4];
for (i=0;i<n;i++)
{
cout<<"CPU "; cin>>ctemporary; pECM[i]->settype(ctemporary);
cout<<"Ghz"; cin>>ftemporary;//pECM->setghz(ftemporary);
cout<<"RAM"; cin>>itemporary;//pECM->setmemory(itemporary);
cout<<"HDD"; cin>>ftemporary;//pECM->setgb(ftemporary);
};
for (i=0;i<n;i++)
cout<<"CPU= "<<pECM[i]->gettypecpu();
system("pause"); 
}
0
Миниатюры
Работа с динамического массивом - ошибка при попытке ввода  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2014, 22:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с динамического массивом - ошибка при попытке ввода (C++):

Ошибка очистки памяти после ввода динамического массива char - C++
Уважаемые форумчане, помогите, пожалуйста. Вроде такой темы на форуме нет. Нужно, дословно, по тексту учебной задачи: ввести строку...

Бесконечный цикл при попытке ввода символа вместо числа - C++
При вводе буквы или символы вместо цифры,программа начинает бесконечно выводить последний записанный для выхода текст.Как это можно...

Ошибка при попытке открытия файла - C++
Добрый день. При выполнении функции открытия файла F.open(adr,ios::in) по несуществующему адресу программу выбивает при этом появляется...

Ошибка при попытке удаления указателя - C++
Программа работает,но при попытке выйти из нее по условию,вылетает ошибка.Если закомментировать delete, то выходит без ошибок.Подскажите,...

Ошибка при попытке загрузки файла - C++
Задача состоит в том, чтобы по очереди загрузить файлы, введя их имена в консоль. #include &lt;fstream&gt; #include &lt;iostream&gt; using...

Ошибка при попытке создания шаблона - C++
В чём ошибка? Функции Map::isGardenWithoutWallFlag, Map::setNothing, Map::incrementRoad, Map::setFlagWall имеют действительно такие...

2
Supernatural
301 / 156 / 29
Регистрация: 22.11.2010
Сообщений: 1,552
18.06.2014, 23:25  [ТС] #2
Ошибка найдена. Строка 80 тип string, надо ее преобразовать в char*, кто знает путь преобразования попроще?
0
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
19.06.2014, 05:49 #3
C++
1
2
char* ctemporary
cout<<"CPU "; cin>>ctemporary;
ctemporary - указатель, который ничем не инициализирован.
Замени на std::string

C++
1
2
std::string ctemporary
cout<<"CPU "; cin>>ctemporary;
Вот тут объявлен массив из 4 указателей:

C++
1
2
3
4
ECM *pECM[4];
for (i=0;i<n;i++)
{
.... pECM[i]->settype(ctemporary);
Память под объекты не выделена, это обращение по не инициализированному указателю.


Вот тут

C++
1
2
3
4
void ECM::settype(char* temp)   //установить тип процессора
{
type=temp;
}
Указателю в классе присваивается адрес временной переменной.

Для начала все переменные char* замени на std::string
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2014, 05:49
Привет! Вот еще темы с ответами:

Ошибка С2280 при попытке создания потока - C++
При попытке создания потока auto t = new thread(&amp;merge, fin, fout, maxmemory, p) вылезает error C2280: предпринята попытка ссылки на...

Ошибка при попытке подключить внешнюю библиотеку - C++
Делал всё по инструкции, только пути другие. Пишет: Гуглёж не помог. Когда-то вроде с glut вылезла такая же проблема, но я не...

Ошибка при удалении динамического массива - C++
Добрый вечер! Ругается на HEAP CORRUPTION DETECTED в строке с delete vertex; В чём может быть дело? void read_stl (char*...

Ошибка при удалении динамического массива - C++
Непонятная мне ошибка при удалении массива #include &lt;iostream&gt; #include &lt;conio.h&gt; using std::cout; using std::cin; using...


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

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

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