Все здравствуйте. Есть вот такое задание к нему программа. Среда разработки — VS 2005. Компиляция проходит без ошибок, однако после ввода строки возникает ошибка: The variable 'i' is being used without being defined в строке str[i]='\0'; в void String::set(). Помогите, пожалуйста, устранить ее. Заранее благодарю
Задание. Пользовательский класс String должен содержать необходимые элементы-данные, которые создаются в динамической области памяти.
Конструктор для создания
Деструктор: ~String();
Метод ввода исходной строки: Set();
Метод печати: void print(…);
Код методов – вне пространства определения класса. Программа иллюстрирует прямой и косвенный способы обращения к методам.
Ввести с клавиатуры строку символов S1. Признак окончания ввода строки – нажатие клавиши «Ввод». Программа должна содержать перегруженную операцию «=», использование которой скопирует S1 в S2 .
Исходную и преобразованную строки вывести в файл. В программе необходимо использовать стоковые и файловые потоки.
Вариант задания: Если длина L=10, то удаляются все A..Z.
#include «stdafx.h»
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <istream>
#include <fstream>
#include <conio.h>
using namespace std;
///////////////////////////////////////
const int MAX=255;
class String
{
private:
char *str;
char *strend;
public:
String();
void set();//metod vvoda ish. stroki
void print();//metod pechati
void run();//metod vipolneniya zadachi
void printend();//metod pechati strend
String& operator= (String&);
~String();
};
//-------------------------------------
String::String()
{
str = new char [MAX];
str[0]='\0';
strend = new char [MAX];
strend[0]='\0';
//cout << «Constructor!»;
}
//-------------------------------------
String& String::operator= (String&ss)//s2=s1
{
strcpy(strend, ss.str);
return *this;
}
//-------------------------------------
String::~String()
{
delete []str;
delete []strend;
//cout << «Destructor!»;
}
//-------------------------------------
void String::run()
{
unsigned int i=0, j=0;
char *ss;
ss = new char [MAX];
ss[0]='\0';
if(strlen(str)==10)
{
for(i=0;i<10;i++)
{
if ( (str[i]<'A') || (str[i]>'Z') )
{
ss[j]=str[i];
j++;
}
}
ss[j]='\0';
str[0]='\0';
strcpy(str,ss);
cout << "\nStroka bez \«A\»...\«Z\»: ";
}
else
{
cout << "\nStroka s \«A\»...\«Z\»: ";
}
}
//-------------------------------------
void String::set()
{
int i;
cout << «Vvedite stroku: »;
char *stroka = new char [MAX];
stroka[0]='\0';
cin.getline(stroka,MAX);
for(unsigned int i=0;i<strlen(stroka);i++)
{
str[i] = stroka[i];
}
str[i]='\0';
delete []stroka;
}
//-------------------------------------
void String:rint()
{
ofstream file(«file.txt», ios::app);
for (unsigned int i=0; i<strlen(str); i++)
{
cout << str[i];
}
file << endl;
for (int i=0; i<strlen(str); i++)
{
file << str[i];
}
}
//-------------------------------------
void String:rintend()
{
cout << "\nSkopirovannaya stroka: ";
for (unsigned int i=0; i<strlen(strend); i++)
{
cout << strend[i];
}
}
//////////////////////////////////////////////
void main(void)
{
ofstream file(«file.txt», ios::out);
String s1,s2;
s1.set();
s1.print();
s1.run();
s1.print();
s2=s1;
s2.printend();
cout << "\n" << endl;
String *s3,*s4;
s3=new String; s4=new String;
s3->set();
s3->print();
s3->run();
s3->print();
*s4=*s3;
s4->printend();
cout << "\n" << endl;
getch();
}
|
||||||||||||
|
|
Похожие вопросы |