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

Помогите отредактировать прогу с классами!!! - C++

Восстановить пароль Регистрация
 
sabaka_2007
4 / 4 / 0
Регистрация: 14.11.2010
Сообщений: 11
14.11.2010, 16:15     Помогите отредактировать прогу с классами!!! #1
помогите пожалуйста, я не знаю почему он мне выдает ошибки(((
вот условие:Описать класс-контейнер массив указателей "Отрезок на плоскости" (TLine) и "Окружность" (TCircle) .
Дан текстовый файл, содержащий информацию о вышеуказанных объектах (не менее 10 строк). Например:
точка 5 6 blue
отрезок 2 3 5 7 red
окружность 5 5 10 white
окружность 6 8 5 black
отрезок 3 4 8 8 blue
Необходимо прочитать данные из текстового файла и разместить в классе-контейнере. Реализовать методы класса-контейнера: конструктор, распечатка данных о массиве,

вот текст:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>

using namespace std;
class point
{
protected:
int x,y;char cvet[20];
public:

point(int a,int b,char cv[20]){x=a,y=b,strcpy(cvet,cv);}

virtual void print()
{cout<<"tochka"<<endl;
};
};


class circle: public point

{
protected:
int radius;
public:

circle(int a, int b, char cv[20],int rad) : point(a,b,cv){radius=rad;};
void print(){cout<<"okrugnost"<<endl;};
}
;
class pramaya:
public point
{protected:
int x2,y2;
public:

pramaya(int a, int b,char cv[20] ,int x3,int y3): point(x,y,cvet){x2=x3;y2=y3;};
void print(){cout<<"pramaya"<<endl;};
};


class maspoint
{
point **mas;
int n;
public:
maspoint(char name[20]);
FILE *in;

int k=0; int a,b,rad,x3,y3;
char line[255], type[10],cv[20];

if((in=fopen(name,"r"))!=NULL)
{
while(!feof(in))
{
fgets(line,255,in);
k++;
};
n=k;
fclose(in);
mas=new point *[n];
in=fopen(name,"r");
k=0;
while(!feof(in))
{
fscanf(in,"%s",type);
fscanf(in,"%d",&a);
fscanf(in,"%d",&b);
if(strcmp(type,"pramaya")==0);
{
fscanf(in,"%d",&x3);
fscanf(in,"%d",&y3);
fscanf(in,"%s",cv);
mas[k]=new pramaya(a,b,x3,y3,cv);
}
if (strcmp(type,"circle")==0);
{fscanf(in,"%d",&rad);
fscanf(in,"%s",cv);
mas[k]=new circle(a,b,rad,cv);
}
k++;
};
fclose(in);
}
else
{
cout<<"net faila";
n=0;
mas=NULL;
};

void print()
{
for(int i=0;i<n;i++)
mas[i]->print();
}
;
};


void main()
{
char fname[20];
cout<<"vvedite ima faila";
cin>>fname;
maspoint m(fname);
m.print;
getch();}


ну и вот ошибки:
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(16) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\string.h(74): см. объявление 'strcpy'
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(54) : error C2864: maspoint::k: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(57) : error C2059: синтаксическая ошибка: if
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(58) : error C2334: непредвиденные лексемы перед '{'; пропуск вероятного тела функции
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(90) : error C2059: синтаксическая ошибка: else
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(91) : error C2334: непредвиденные лексемы перед '{'; пропуск вероятного тела функции
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(112) : error C3867: maspoint:: print: в вызове функции отсутствует список аргументов; используйте "&maspoint:: print" для создания указателя на член




заранее спасибо))
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2010, 16:15     Помогите отредактировать прогу с классами!!!
Посмотрите здесь:

C++ Помогите переписать прогу
Помогите написать прогу. C++
Помлгите отредактировать прогу C++
C++ Помогите исправить прогу
C++ ПОМОГИТЕ отредактировать задачку!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.11.2010, 16:39     Помогите отредактировать прогу с классами!!! #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я приведу более сокращенный код в котором приведу Ваши ошибки:
C++
1
2
3
4
5
6
7
8
9
10
class A
{
protected:
int x,y;
int hh=5;// Так делать нельзя поэтому - maspoint::k: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
if(hh>1)// так тоже делать нельзя поэтому - error C2059:,  error C2059:
x=5;
else
x=6;
};
C++
1
2
3
4
5
6
7
8
void main()
{
char fname[20];
cout<<"vvedite ima faila";
cin>>fname;
maspoint m(fname);
m.print;// так функции не вызываются поэтому - error C3867:
getch();}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
14.11.2010, 16:40     Помогите отредактировать прогу с классами!!! #3
Вам же компилятор по-русски написал, даже строки указал!!!
например:
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(54) : error C2864: maspoint::k: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
смотрим, что там, ага видим не правильно оформленный код, и что, номера строк считать?
Оформите код в теге [СРР]код вставлять здесь[/СРР] и прочитайте, что пишет компилятор.
sabaka_2007
4 / 4 / 0
Регистрация: 14.11.2010
Сообщений: 11
14.11.2010, 18:48  [ТС]     Помогите отредактировать прогу с классами!!! #4
все,осталось только error 2059(((
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
14.11.2010, 19:19     Помогите отредактировать прогу с классами!!! #5
Ну вот))) Покажите код который получился, только в теге выделения кода, с указанием строки с ошибкой.
sabaka_2007
4 / 4 / 0
Регистрация: 14.11.2010
Сообщений: 11
15.11.2010, 05:02  [ТС]     Помогите отредактировать прогу с классами!!! #6
[СРР]bbd
fd[/СРР]
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.11.2010, 05:11     Помогите отредактировать прогу с классами!!! #7
sabaka_2007, имелось ввиду что Вы вот что покажете:
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>
 
using namespace std;
class point
{
protected:
int x,y;char cvet[20];
public:
 
point(int a,int b,char cv[20]){x=a,y=b,strcpy(cvet,cv);}
 
virtual void print()
{cout<<"tochka"<<endl;
};
};
 
 
class circle: public point
 
{
protected:
int radius;
public:
 
circle(int a, int b, char cv[20],int rad) : point(a,b,cv){radius=rad;};
void print(){cout<<"okrugnost"<<endl;};
}
;
class pramaya:
public point
{protected:
int x2,y2;
public:
 
pramaya(int a, int b,char cv[20] ,int x3,int y3): point(x,y,cvet){x2=x3;y2=y3;};
void print(){cout<<"pramaya"<<endl;};
};
 
 
class maspoint
{
point **mas;
int n;
public:
maspoint(char name[20]);
FILE *in;
 
int k=0; int a,b,rad,x3,y3;
char line[255], type[10],cv[20];
 
if((in=fopen(name,"r"))!=NULL)
{
while(!feof(in))
{
fgets(line,255,in);
k++;
};
n=k;
fclose(in);
mas=new point *[n];
in=fopen(name,"r");
k=0;
while(!feof(in))
{
fscanf(in,"%s",type);
fscanf(in,"%d",&a);
fscanf(in,"%d",&b);
if(strcmp(type,"pramaya")==0);
{
fscanf(in,"%d",&x3);
fscanf(in,"%d",&y3);
fscanf(in,"%s",cv);
mas[k]=new pramaya(a,b,x3,y3,cv);
}
if (strcmp(type,"circle")==0);
{fscanf(in,"%d",&rad);
fscanf(in,"%s",cv);
mas[k]=new circle(a,b,rad,cv);
}
k++;
};
fclose(in);
}
else 
{
cout<<"net faila";
n=0;
mas=NULL;
};
 
void print()
{
for(int i=0;i<n;i++)
mas[i]->print();
}
;
};
 
 
void main()
{
char fname[20];
cout<<"vvedite ima faila";
cin>>fname;
maspoint m(fname);
m.print;
getch();}
Только сравните, как код выглядит у меня и у Вас в первом сообщении.
Для этого есть кнопочка 'C++' сверху где печатаете ответ
sabaka_2007
4 / 4 / 0
Регистрация: 14.11.2010
Сообщений: 11
15.11.2010, 05:12  [ТС]     Помогите отредактировать прогу с классами!!! #8
Код
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>

using namespace std;
class point
{
protected:
int x,y;char cvet[20];
public:
	
	point(int a,int b,char cv[20]){x=a,y=b,strcpy(cvet,cv);}

	virtual void print()
	{cout<<"tochka"<<endl;
	};
};


class circle:public point
	
{
protected:
	int radius;
public:

	circle(int a, int b, char cv[20],int rad):point(a,b,cv){radius=rad;};
	void print(){cout<<"okrugnost"<<endl;};
}
;
class pramaya:
	public point
{protected:
	int x2,y2;
public:
	
	pramaya(int a, int b,char cv[20] ,int x3,int y3):point(x,y,cvet){x2=x3;y2=y3;};
	void print(){cout<<"pramaya"<<endl;};
};


class maspoint
{
	point **mas;
int n;
public:
	maspoint(char name[20]);
	FILE *in;
	
	//int k=0; 
	int a,b,rad,x3,y3;
char line[255], type[10],cv[20];



if ((in=fopen(name,"r"))!=NULL)
{int k=0;
	while(!feof(in))
	{
		fgets(line,255,in);
	k++;
	};
	n=k;
	fclose(in);
	mas=new point *[n];
	in=fopen(name,"r");
	int k=0;
	while(!feof(in))
	{
		fscanf(in,"%s",type);
fscanf(in,"%d",&a);
fscanf(in,"%d",&b);
if(strcmp(type,"pramaya")==0);
{
	fscanf(in,"%d",&x3);
fscanf(in,"%d",&y3);
fscanf(in,"%s",cv);
mas[k]=new pramaya(a,b,x3,y3,cv);
}
if (strcmp(type,"circle")==0);
{fscanf(in,"%d",&rad);
fscanf(in,"%s",cv);
mas[k]=new circle(a,b,rad,cv);
}
k++;
	};
	fclose(in);
}
else{
	cout<<"net faila";
n=0;
mas=NULL;
};

void print()
{
	for(int i=0;i<n;i++)
		mas[i]->print();
}
;
};


void main()
{
	char fname[20];
	cout<<"vvedite ima faila";
	cin>>fname;
	maspoint m(fname);
	m.print();
getch();}
Код
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(60) : error C2059: синтаксическая ошибка: if
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(60) : error C2334: непредвиденные лексемы перед '{'; пропуск вероятного тела функции
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(61) : error C2059: синтаксическая ошибка: {
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(61) : error C2334: непредвиденные лексемы перед '{'; пропуск вероятного тела функции
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(93) : error C2059: синтаксическая ошибка: else
1>c:\users\максим\documents\visual studio 2008\projects\крист\крист\крист.cpp(93) : error C2334: непредвиденные лексемы перед '{'; пропуск вероятного тела функции
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.11.2010, 05:18     Помогите отредактировать прогу с классами!!! #9
Ну у Вас осталась таже ошибка что и вчера: Вам нужно почитать про классы. В описании классов можно объявлять переменные, функции. Но нельзя в описании вести какие либо вычисления.
Еще раз:
C++
1
2
3
4
5
6
7
8
9
10
class A
{
protected:
int x,y;
int hh;
if(hh>1)// так делать нельзя
x=5;
else
x=6;
};
Посмотрите и сравните что у Вас в описании класса maspoint
sabaka_2007
4 / 4 / 0
Регистрация: 14.11.2010
Сообщений: 11
15.11.2010, 15:25  [ТС]     Помогите отредактировать прогу с классами!!! #10
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Ну у Вас осталась таже ошибка что и вчера: Вам нужно почитать про классы. В описании классов можно объявлять переменные, функции. Но нельзя в описании вести какие либо вычисления.
Еще раз:
C++
1
2
3
4
5
6
7
8
9
10
class A
{
protected:
int x,y;
int hh;
if(hh>1)// так делать нельзя
x=5;
else
x=6;
};
Посмотрите и сравните что у Вас в описании класса maspoint

то есть мне надо все эти вычисления обозвать какой-либо функцией,я правильно поняла?

Добавлено через 26 минут
всёёёё,огромное спасибо)))
все работает))))
какая же я была глупенькая)))
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
15.11.2010, 15:29     Помогите отредактировать прогу с классами!!! #11
Цитата Сообщение от sabaka_2007 Посмотреть сообщение
то есть мне надо все эти вычисления обозвать какой-либо функцией,я правильно поняла?
Это можно сделать в конструкторе класса!

P.S. Только, если я не ошибаюсь, если у вас код похож на пример valeriikozlov, то в конструкторе так делать нельзя (т.е. задавать значение одного члена класса в зависимости от значения другого), т.к. стандарт не гарантирует какой член класса будет инициализирован первым. Т.е. инициализация может происходить не в том порядке, как вы написали и может случится так, что член в if еще не определен, что естественно приведет к неправильной инициализации второго члена.
sabaka_2007
4 / 4 / 0
Регистрация: 14.11.2010
Сообщений: 11
15.11.2010, 18:53  [ТС]     Помогите отредактировать прогу с классами!!! #12
что-то теперь он мне ругается на:
mas[i]->print();

вроде проверила,все правильно

Добавлено через 28 минут
Цитата Сообщение от sabaka_2007 Посмотреть сообщение
что-то теперь он мне ругается на:
mas[i]->print();

вроде проверила,все правильно
ошибку не выдает,просто при вводе имени файла вылетает,и в окошечке пишет:Необработанное исключение в "0x010c2646" в "крист.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcdcd".
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.11.2010, 19:05     Помогите отредактировать прогу с классами!!! #13
sabaka_2007, еще раз выложите весь код который у Вас сейчас.
sabaka_2007
4 / 4 / 0
Регистрация: 14.11.2010
Сообщений: 11
15.11.2010, 19:13  [ТС]     Помогите отредактировать прогу с классами!!! #14
Код
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>

using namespace std;
class point
{
protected:
int x,y;char cvet[20];
public:
	int getx(){return x;};
	int gety(){return y;}
	
	point(int a,int b,char cv[20]){x=a,y=b,strcpy(cvet,cv);}

	virtual void print()
	{cout<<"точка"<<"x="<<getx()<<"y="<<gety()<<endl;
	};
virtual double dlina()
{return 0;};
virtual double plosad()
{return 0;};

	
};

//---------------------------------------------------------------------------------
class circle:public point
	
{
protected:
	int radius;
public:

	circle(int a, int b, char cv[20],int rad):point(a,b,cv){radius=rad;};
	void print(){cout<<"окружность:"<<"x="<<getx()<<"y="<<gety()<<"радиус="<<radius<<endl;};


 double dlina()
 {
	 double z;
  z=2*3,14*radius;
  return z;
 };
 double plosad()
{
		double q;
		 q=3,14*radius*radius;
	return q;
 };
};
//---------------------------------------------------------------------------------
class pramaya:
	public point
{
protected:
	int x2,y2;
public:
	
	pramaya(int a, int b,char cv[20] ,int x3,int y3):point(x,y,cvet){x2=x3;y2=y3;};
	void print(){cout<<"прямая"<<"начальные координаты:("<<getx()<<","<<gety()<<")"<<"конечные координаты:("<<x2<<","<<y2<<")"<<endl;
	};
	double dlina()
	{
	double z;
    z= sqrt(double ((x2-getx())*(x2-getx())+(y2-gety())*(y2-gety())));

    return z;
	}
	double plosad()
	{return 0;};


};

//---------------------------------------------------------------------------------
class maspoint
{
	point **mas;
int n;
public:
	maspoint(char name[20])
	{
		FILE *in;
	
	
	int k=0,a,b,rad,x3,y3;
char line[255], type[10],cv[20];



if ((in=fopen(name,"r"))!=NULL)
{
	int k=0;
	while(!feof(in))
	{
		fgets(line,255,in);
	    k++;
	};
	n=k;
	fclose(in);
	mas=new point *[n];
	in=fopen(name,"r");
	
	while(!feof(in))
	{
		fscanf(in,"%s",type);
        fscanf(in,"%d",&a);
        fscanf(in,"%d",&b);
		if(strcmp(type,"point")==0)
		{  fscanf(in,"%s",cv);
    mas[k]=new point(a,b,cv);
}

        if(strcmp(type,"pramaya")==0)
{
	fscanf(in,"%d",&x3);
    fscanf(in,"%d",&y3);
    fscanf(in,"%s",cv);
    mas[k]=new pramaya(a,b,cv,x3,y3);
}
if (strcmp(type,"circle")==0)
{fscanf(in,"%d",&rad);
fscanf(in,"%s",cv);
mas[k]=new circle(a,b,cv,rad);
}
k++;
	};
	fclose(in);
}

else
{
	cout<<"нет файла"<<endl;
n=0;
mas=NULL;
};
	}

void print()
{
	for(int i=0;i<n;i++)
		mas[i]->print();
};
double summadlin()
{
	double s=0;
for(int i=0;i<n;i++)
s+=mas[i]->dlina();
return s;
}

double summaplosad()
{
	double s=0;
for(int i=0;i<n;i++)
s+=mas[i]->plosad();
return s;
}

};

//---------------------------------------------------------------------------------
void main()
{
	setlocale (LC_ALL, "Russian");
	char fname[20];
	cout<<"введите имя файла"<<endl;
	cin>>fname;
	maspoint m(fname);
	m.print();
	cout<<"сумма длин="<<m.summadlin()<<endl<<"сумма площадей="<<m.summaplosad()<<endl;
getch();
}
это она уже доделанная
вот полное условие:
Описать класс-контейнер (массив указателей на объекты класса "Точка на плоскости", "Отрезок на плоскости" и "Окружность"
Дан текстовый файл, содержащий информацию о вышеуказанных объектах (не менее 10 строк). Например:
точка 5 6 blue
отрезок 2 3 5 7 red
окружность 5 5 10 white
окружность 6 8 5 black
отрезок 3 4 8 8 blue
Необходимо прочитать данные из текстового файла и разместить в классе-контейнере. Реализовать методы класса-контейнера: конструктор, деструктор, распечатка данных об объектах массива, вычислить сумму длин всех объектов, вычислить сумму площадей всех объектов

Добавлено через 1 минуту
147 153 161 строчки,где-то там проблемы
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.11.2010, 19:39     Помогите отредактировать прогу с классами!!! #15
sabaka_2007, Примерно картина ясная. Напишите что у Вас записано в файле, из которого Ваша программа считывает данные.
sabaka_2007
4 / 4 / 0
Регистрация: 14.11.2010
Сообщений: 11
15.11.2010, 19:41  [ТС]     Помогите отредактировать прогу с классами!!! #16
pramaya 2 3 5 7 red
circle 5 5 10 white
circle 6 8 5 black
pramaya 3 4 8 8 blue


вот это.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.11.2010, 19:59     Помогите отредактировать прогу с классами!!! #17
Вот Ваш код (посмотрите в нем коментарии):
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>
 
using namespace std;
class point
{
protected:
int x,y;char cvet[20];
public:
        int getx(){return x;};
        int gety(){return y;}
        
        point(int a,int b,char cv[20]){x=a,y=b,strcpy(cvet,cv);}
 
        virtual void print()
        {cout<<"точка"<<"x="<<getx()<<"y="<<gety()<<endl;
        };
virtual double dlina()
{return 0;};
virtual double plosad()
{return 0;};
 
        
};
 
//---------------------------------------------------------------------------------
class circle:public point
        
{
protected:
        int radius;
public:
 
        circle(int a, int b, char cv[20],int rad):point(a,b,cv){radius=rad;};
        void print(){cout<<"окружность:"<<"x="<<getx()<<"y="<<gety()<<"радиус="<<radius<<endl;};
 
 
 double dlina()
 {
         double z;
  z=2*3,14*radius;
  return z;
 };
 double plosad()
{
                double q;
                 q=3,14*radius*radius;
        return q;
 };
};
//---------------------------------------------------------------------------------
class pramaya:
        public point
{
protected:
        int x2,y2;
public:
        
        pramaya(int a, int b,char cv[20] ,int x3,int y3):point(x,y,cvet){x2=x3;y2=y3;};
        void print(){cout<<"прямая"<<"начальные координаты:("<<getx()<<","<<gety()<<")"<<"конечные координаты:("<<x2<<","<<y2<<")"<<endl;
        };
        double dlina()
        {
        double z;
    z= sqrt(double ((x2-getx())*(x2-getx())+(y2-gety())*(y2-gety())));
 
    return z;
        }
        double plosad()
        {return 0;};
 
 
};
 
//---------------------------------------------------------------------------------
class maspoint
{
        point **mas;
int n;
public:
        maspoint(char name[20])
        {
                FILE *in;
        
        
        int k=0,a,b,rad,x3,y3;
char line[255], type[10],cv[20];
 
 
 
if ((in=fopen(name,"r"))!=NULL)
{
        int k=0;// открыли файл k=0
        while(!feof(in))
        {
                fgets(line,255,in);
            k++;
        };
        n=k;//здесь k=5 
// а всего лишь забыли здесь написать:  k=0;
        fclose(in);
        mas=new point *[n];
        in=fopen(name,"r");
        
        while(!feof(in))
        {
                fscanf(in,"%s",type);
        fscanf(in,"%d",&a);
        fscanf(in,"%d",&b);
                if(strcmp(type,"point")==0)
                {  fscanf(in,"%s",cv);
    mas[k]=new point(a,b,cv);
}
 
        if(strcmp(type,"pramaya")==0)
{
        fscanf(in,"%d",&x3);
    fscanf(in,"%d",&y3);
    fscanf(in,"%s",cv);
    mas[k]=new pramaya(a,b,cv,x3,y3);//это выполняется когда k=5 и k=8
}
if (strcmp(type,"circle")==0)
{fscanf(in,"%d",&rad);
fscanf(in,"%s",cv);
mas[k]=new circle(a,b,cv,rad);//это выполняется когда k=6 и k=7
}
k++;
        };
        fclose(in);
}
 
else
{
        cout<<"нет файла"<<endl;
n=0;
mas=NULL;
};
        }
 
void print()
{
        for(int i=0;i<n;i++)// когда мы выводим на печать, то начинаем с mas[0] - а он есть?
                mas[i]->print();
};
double summadlin()
{
        double s=0;
for(int i=0;i<n;i++)
s+=mas[i]->dlina();
return s;
}
 
double summaplosad()
{
        double s=0;
for(int i=0;i<n;i++)
s+=mas[i]->plosad();
return s;
}
 
};
 
//---------------------------------------------------------------------------------
void main()
{
        setlocale (LC_ALL, "Russian");
        char fname[20];
        cout<<"введите имя файла"<<endl;
        cin>>fname;
        maspoint m(fname);
        m.print();
        cout<<"сумма длин="<<m.summadlin()<<endl<<"сумма площадей="<<m.summaplosad()<<endl;
getch();
}
Но это еще не все ошибки. Теперь посмотрите на результат вычисления.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2010, 20:21     Помогите отредактировать прогу с классами!!!
Еще ссылки по теме:

Помогите написать прогу в С++ C++
C++ помогите написать прогу
C++ Помогите разобраться с классами в C++

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

Или воспользуйтесь поиском по форуму:
sabaka_2007
4 / 4 / 0
Регистрация: 14.11.2010
Сообщений: 11
15.11.2010, 20:21  [ТС]     Помогите отредактировать прогу с классами!!! #18
он какой-то мусор выдает,в координатах,и пишет,что везде-прямая

Добавлено через 3 минуты
Цитата Сообщение от sabaka_2007 Посмотреть сообщение
он какой-то мусор выдает,в координатах,и пишет,что везде-прямая
с мусором разобралась)))теперь вроде все работает))
Yandex
Объявления
15.11.2010, 20:21     Помогите отредактировать прогу с классами!!!
Ответ Создать тему
Опции темы

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