Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Supernatural
604 / 203 / 47
Регистрация: 22.11.2010
Сообщений: 1,587
Записей в блоге: 1
#1

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

18.06.2014, 22:44. Просмотров 263. Ответов 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
Уважаемые форумчане, помогите, пожалуйста. Вроде такой темы на форуме нет. ...

Бесконечный цикл при попытке ввода символа вместо числа
При вводе буквы или символы вместо цифры,программа начинает бесконечно выводить...

Ошибка при попытке загрузки файла
Задача состоит в том, чтобы по очереди загрузить файлы, введя их имена в...

Ошибка при попытке открытия файла
Добрый день. При выполнении функции открытия файла F.open(adr,ios::in) по...

Ошибка при попытке создания шаблона
В чём ошибка? Функции Map::isGardenWithoutWallFlag, Map::setNothing,...

2
Supernatural
604 / 203 / 47
Регистрация: 22.11.2010
Сообщений: 1,587
Записей в блоге: 1
18.06.2014, 23:25  [ТС] #2
Ошибка найдена. Строка 80 тип string, надо ее преобразовать в char*, кто знает путь преобразования попроще?
0
uglyPinokkio
326 / 229 / 55
Регистрация: 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
Привет! Вот еще темы с решениями:

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

Ошибка при попытке сопоставить список аргументов
Выбивает вот такую ошибку: &quot; при попытке сопоставить список аргументов...

Ошибка С2280 при попытке создания потока
При попытке создания потока auto t = new thread(&amp;merge, fin, fout, maxmemory,...

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


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

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

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