Будем жить, Маэстро...
Сообщения: 6694
Благодарности: 1393
|
Профиль
|
Сайт
|
Отправить PM
| Цитировать
По поводу задачи А) в шестом задание, не могу правильно вычислить второй тип, когда в функции есть переменными параметрами, почему-то код: выдаёт какое-то число десятизначное, число... Почему так, и как нужно правильно? Подскажите?!
Код: 
void PrintString(const char *S, ...)
{
va_list ap;
va_start(ap, S); // раскрутка arg
// int COUNTER = va_arg(ap, int);
int COUNTER = 0;
// cout<<" COUNTER = "<<COUNTER<<endl;
if((COUNTER = va_arg(ap, int)) > 0){
....// code...
}
//----------------------------------
Задача "А")
читать дальше »
Код: 
//---------------------------------------------------------------------------
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;
#include <stdarg.h>
//#include <stdio.h>
void PrintString(const char *String, ...);
int main()
{
char *s = "Hello Anna!";
char *sPtr = &(*s);
int counter,
z;
cout<<" Enter String: ";
cin.getline(s, 100, '\n');
// PrintString(sPtr);
cout<<" Enter Number: ";
cin>>counter;
while(counter < 0){
cout<<" Enter Number: ";
cin>>counter;
}
PrintString(sPtr, counter);
cin>>z;
return 0;
}
//---------------------------------------------------------------------------
void PrintString(const char *S, ...)
{
va_list ap;
va_start(ap, S); // раскрутка arg
// int COUNTER = va_arg(ap, int);
int COUNTER = 0;
// cout<<" COUNTER = "<<COUNTER<<endl;
if((COUNTER = va_arg(ap, int)) > 0){
cout<<" Vono=="<<endl;
cout<<" COUNTER = "<<COUNTER<<endl;
for(int i = 0; i < COUNTER; i++)
cout<<" Num: "<<i<<"Output: "<<S<<endl;
va_end(ap);
}
// очистка arg
else{
cout<<" Ne vono"<<endl;
cout<<"Output: "<<S<<endl;
}
}
//----------------------------------------------------------------------
В чём я ошибся, или не так сделал?!
Задача "А")
читать дальше »
Код: 
// Написать програму с использованием конструктора копирования.
// Обьявить класс MyClass, который содержит функцию f1(), что будет возвращать обьект MyClass,
// функцию f2(), что будет получать обьект типа MyClass как параметр
// и выводить на экран значение закрытых переменных класса для данного обьекта,
// конструктор и конструктор копирования.
// В основной части программы присвойте обьекту класса результат выполнения функции f1(),
// используйте функцию f2(), выполните явную инициализацию одного обьекта другим.
// Все конструкторы выводят на экран "В конструкторе" или "В конструкторе копирования".
//----------------------------------------------------------------------------
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;
class MyClass{ // Класс MyClass
friend void fr2(MyClass MC);
public:
MyClass(int x = 1) { num = x; cout<<" Konstruktor = "<<num<<endl; } // Конструктор
MyClass(const MyClass &MC); // Копирующий конструктор
const MyClass fr1() { return *this; };
private:
int num; // Число....
};
// Копирующий конструктор-----------------------------------------------------
MyClass::MyClass(const MyClass &MC)
{
num = MC.num;
cout<<"\n Konstruktor Copy = "<<num<<endl;
}
// Функция fr2(), принимает однин параметр MyClass и выводит значения закрытых членов
void fr2(MyClass MC)
{
cout<<" Activation Function fr2(MyClass MC)"<<endl;
cout<<" Value = "<<MC.num<<endl;
}
// Выполнение программы-------------------------------------------------------
int main()
{
int z;
MyClass MC_1(-88),
MC_2(105),
MC_3(247),
MC_4(-578),
MC_5(MC_1),
MC_6,
MC_7;
MC_6 = MC_2; // Присваивание одного объекта другому
fr2(MC_6.fr1()); // Инициализация одного объекта другим, через вызов функции fr1()
fr2(MC_4); // Инициализация одного объекта другим
fr2(MC_5.fr1()); // Инициализация одного объекта другим, через вызов функции fr1()
cin>>z;
return 0;
}
//---------------------------------------------------------------------------
Задача "Б")
читать дальше »
Код: 
// Написать программу вычисления среднего арифметического 5 и 2-х чисел, в которой:
// 1.Перегрузить функцию в зависимости от количества аргументов.
// 2.Использовать арагументы по умолчанию--------------------------------------
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;
#include <iomanip.h>
using std::setprecision;
using std::setiosflags;
// Вычисление среднего арифметического с пятью параметром---------------------
double Average(double V1 = 2.0, double V2 = 5.0, double V3 = 7.0, double V4 = 9.0, double V5 = 8.0)
{ return (V1 + V2 + V3 + V4 + V5) / 5; };
// Вычисление среднего арифметического с двумя параметрами--------------------
double Average(int V1 = 4.0, int V2 = 7.0)
{ return (static_cast<double>(V1) + static_cast<double>(V2)) / 2; };
//----------------------------------------------------------------------------
int main()
{
int num6, // Число 6
num7, // Число 7
z;
double num1, // Число 1
num2, // Число 2
num3, // Число 3
num4, // Число 4
num5, // Число 5
average1, // Среднее 1
average2; // Среднее 2
// Форматирование потока...
cout<<setiosflags(ios::fixed | ios::showpoint)
<<setprecision(1);
// Ввод пяти чисел для функции с пятью аргументами (double)...
cout<<" Print Result Average 5 Arguments\n";
cout<<" Enter number 1: ";
cin>>num1;
cout<<" Enter number 2: ";
cin>>num2;
cout<<" Enter number 3: ";
cin>>num3;
cout<<" Enter number 4: ";
cin>>num4;
cout<<" Enter number 5: ";
cin>>num5;
// Функция вычисляет среднее для пяти параметров
average1 = Average(num1, num2, num3, num4, num5);
cout<<" Average s 5 Arguments = "<<average1<<endl<<endl;
// Ввод двух чисел для функции с двумя параметрами (int)...
cout<<" Print Result Average 2 Arguments\n";
cout<<" Enter number 1: ";
cin>>num6;
cout<<" Enter number 2: ";
cin>>num7;
// Функция вычисляет среднее для двух параметров
average2 = Average(num6, num7);
cout<<" Average s 2 Arguments = "<<average2<<endl<<endl;
// Печать результатов среднего по умолчанию для функции с пятью параметрами
cout<<" Print Result Average Default 5 Argument\n";
average1 = Average(3.3, 4.4, 7.7);
cout<<" Average Default 5 Argument = "<<average1<<endl<<endl;
// Печать результатов среднего по умолчанию для функции с двумя параметрами
cout<<" Print Result Average Default 2 Argument\n";
average2 = Average(55, 88);
cout<<" Average Default 2 Argument = "<<average2<<endl;
cin>>z;
return 0;
}
//---------------------------------------------------------------------------
Задача "В")
читать дальше »
Код: 
// Создать класс StrType, который содержит(закрытые переменные)
// саму строку (char* p;) и длину этой строки (int len;).
// Определить открытые функции получения строки и длины строки.----------------
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;
//#include "StrType.h"
class StrType{ // Класс StrType
public:
StrType(char *s = "Anna", int l = 8); // Конструктор с аргументами по умолчанию
int getLen() const { return len; }; // Получение длины строки
char *getString() { return p; }; // Получение строки
void Print(); // Печать объекта, вывод значений...
private:
char *p; // Строка
int len; // Длина строки
};
// Конструктор по умолчанию--------------------------------------------------
StrType::StrType(char *str, int lenght)
{
p = str;
len = lenght;
}
// Печать объекта, для проверки----------------------------------------------
void StrType::Print()
{
cout<<" Value Default\n\n";
cout<<" String (*p): "<<getString()<<endl;
cout<<" Lenght (len) = "<<getLen()<<endl;
}
// Демонстрация композиции. Тестирование-------------------------------------
int main()
{
int z;
StrType s;
s.Print();
cin>>z;
return 0;
}
//---------------------------------------------------------------------------
Задача "Г")
читать дальше »
Код: 
// Создать класс StrType, который содержит(закрытые переменные)
// саму строку (char* p;) и длину этой строки (int len;).
// Определить открытые функции получения строки и длины строки.----------------
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;
#include <cstring.h>
#include <cassert>
class StrType{ // Класс StrType
public:
StrType(); // Конструктор без аргументов
StrType(char *s, int l); // Конструктор с аргументами
int getLen() const { return len; }; // Получение длины строки
char *getString() { return p; }; // Получение строки
void Print(); // Печать объекта, вывод значений...
private:
char *p; // Строка
int len; // Длина строки
};
// Конструктор без параметров, с вводом с клавиатуры--------------------------
StrType::StrType()
{
char sTemp[255] = ""; // Временный символьный массив
len = 255;
p = new char[255 + 1]; // Выделение памяти в 255 байт плюс завершающий символ
assert(p != 0); // Проверка выделения памяти
cout<<" Enter String: "; // Предложение ввода
cin.getline(sTemp, 255, '\n'); // Ввод строки символов
strcpy(p, sTemp); // Копирование строки символов в "р"
delete []sTemp;
}
// Конструктор с параметрами, без ввода с клавиатуры--------------------------
StrType::StrType(char *str, int lenght)
{
len = strlen(str); // Вычисление длины строки
if(len >= 0 && len < 256){ // Проверка диапазона, должен быть меньше 255
p = new char[len + 1]; // Выделение памяти в 255 байт плюс завершающий символ
assert(p != 0); // Проверка выделения памяти
strcpy(p, str); // Копирование...
}
else // Вывод ошибки если диапазон массива меньше нуля и больше 256 байт...
cout<<" Error! Lenght > 256 bytes!";
}
// Печать объекта, для проверки----------------------------------------------
void StrType::Print()
{
cout<<endl;
cout<<" String (char *p): "<<getString()<<endl; // Печать строки...
cout<<" Lenght (int len) = "<<getLen()<<endl; // Печать длины строки...
}
// Демонстрация композиции. Тестирование-------------------------------------
int main()
{
int z;
StrType s1, // 1-й объект, без инициализации...
s2("Anna Kanaeva - programming and diasyner", 40); // 2-й объект, инициализирован...
s1.Print(); // Печать объекта...
s2.Print(); // Печать объекта...
cin>>z;
return 0;
}
//---------------------------------------------------------------------------
Задача "Д")
читать дальше »
Код: 
// Определить функцию с целым аргументом, который по умолчанию равен нулю,
// которая выводит строку, что сохраняеться в классе, на экран:
// когда ей не передаётся ни одного параметра, тогда функция выводит всю строку;
// если передаеться какое то число, которое не равно нулю, тогда эта функция
// выводит столько элементов строки, согласно числу, которое было передано функции.
// Показать что перегруженные конструкторы и функция работает так как нужно.
// А как нужно?!
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;
#include <cstring.h>
#include <cassert>
#include <stdarg.h>
#include <stdio.h>
class StrType{ // Класс StrType
public:
StrType(); // Конструктор без аргументов
StrType(char *s, int l); // Конструктор с аргументами
int getLen() const { return len; }; // Получение длины строки
char *getString() { return p; }; // Получение строки
void Function(int n = 1, ...);
void Print(); // Печать объекта, вывод значений...
private:
char *p; // Строка
int len; // Длина строки
};
// Конструктор без параметров, с вводом с клавиатуры--------------------------
StrType::StrType()
{
char sTemp[255] = ""; // Временный символьный массив
len = 255;
p = new char[255 + 1]; // Выделение памяти в 255 байт плюс завершающий символ
assert(p != 0); // Проверка выделения памяти
cout<<" Enter String: "; // Предложение ввода
cin.getline(sTemp, 255, '\n'); // Ввод строки символов
strcpy(p, sTemp); // Копирование строки символов в "р"
delete []sTemp;
}
// Конструктор с параметрами, без ввода с клавиатуры--------------------------
StrType::StrType(char *str, int lenght)
{
len = strlen(str); // Вычисление длины строки
if(len >= 0 && len < 256){ // Проверка диапазона, должен быть меньше 255
p = new char[len + 1]; // Выделение памяти в 255 байт плюс завершающий символ
assert(p != 0); // Проверка выделения памяти
strcpy(p, str); // Копирование...
}
else // Вывод ошибки если диапазон массива меньше нуля и больше 256 байт...
cout<<" Error! Lenght > 256 bytes!";
}
// Печать объекта, для проверки----------------------------------------------
void StrType::Print()
{
cout<<endl;
cout<<" String (char *p): "<<getString()<<endl;
cout<<" Lenght (int len) = "<<getLen()<<endl;
}
// Функция с перечислимыми параметрами---------------------------------------
void StrType::Function(int n, ...)
{
// int i = 0;
// va_list List1;
//va_start(List1, i);
// i = va_arg(List1, char *);
cout<<"\n\n Value parameters len for Function() = "<<n<<endl;
for(int i = 0; i < n; i++)
cout<<*p++;
//va_end(List1);
}
// Демонстрация композиции. Тестирование-------------------------------------
int main()
{
int z;
StrType s1, // 1-й объект...
s2("Anna Kanaeva - programmist and disayner", 40); // 2-й объект...
s1.Print(); // Печать объекта...
s2.Print(); // Печать объекта...
s2.Function(35); // Число, сколько символов вывести для 1-го объекта
s1.Function(8); // Число, сколько символов вывести для 2-го объекта
cin>>z;
return 0;
}
//---------------------------------------------------------------------------
|