Вася, напиши прогу будь ласка, ось умова:
Для заданої квадратної матриці А заданого порядку n визначити добуток матриць А * В, де елементи матриці В визначаються за формулою:
bij=1/(sign(2i-j-2)+2) , де i,j = 1,...,n
Greg написав:Вася, напиши прогу будь ласка, ось умова:
Для заданої квадратної матриці А заданого порядку n визначити добуток матриць А * В, де елементи матриці В визначаються за формулою:
bij=1/(sign(2i-j-2)+2) , де i,j = 1,...,n
#include <iostream>
#include <cstdlib> // тут rand (), srand ()
#include <stdio.h>
#include <math.h>
#include <conio.h> //
using namespace std; // підключаємо все необхідне для роботи програми
template <class Value>
int sign(Value Val) {
if (Val == 0.) return 0;
if (Val > 0.) return 1;
else return -1;
}
void PrintMas(double *A,int n){// ДрукМатриці. Приймає вказівник на перший
//елемент масиву і кількість елементів
for (int i = 0 ; i < n ; i++){
for (int j = 0 ; j < n ; j++){
cout<<*(A+i*n+j)<<"\t ";
}
cout<<endl;
}
cout<<endl;
return ;
}
void EnterMas(double *A,int n){// Заповнення матриці з клави. Парам.аналог.якв^^
for (int i = 0 ; i < n ; i++){
for (int j = 0 ; j < n ; j++){
cout<<"Enter Matrix ["<<j+1<<"]x["<<i+1<<"] = ";
cin>>*(A+i*n+j);
}
}
return ;
}
void FillBMas(double *B,int n){ // Заповнює матрицю B. Параметри аналогічні ^^
for (int i = 0 ; i < n ; i++){
for (int j = 0 ; j < n ; j++){
*(B+i*n+j)=1/double((sign(2*i-j-2)+2));
}
}
return ;
}
void MnojMartixMas(double *A,double *B, double *C,int n){
// множення матриці. Приймає вказіники на початки масивів A,B,C та розмірність
for(int irow = 0; irow < n; irow++)
for(int icol = 0; icol < n; icol++) {
double sum = 0;
for(int k = 0; k < n; k++) {
sum += (*(A+irow*n+k)) * (*(B+k*n+icol));
}
*(C+irow*n+icol) = sum;
}
return ;
}
main ()
{
int n; // розмірність матриці
do{
cout<<"Matrix\n Enter N = ";
cin>>n;
if (n<=0) cout<<"ERROR : N > 0 !\n";
}while (n<=0); // не даємо вийти, поки не буде введено n>0
double *A = new double [n*n]; // створюємо вказівники на масиви
double *B = new double [n*n]; // розмірністю n x n
double *C = new double [n*n]; // дійсний тип
EnterMas(A,n); // заповнюємо масив A розм. n*n з клави
PrintMas(A,n); // друк масив A розм. n*n
FillBMas(B,n); // заповнюємо масив B розм. n*n за умовою
PrintMas(B,n); // друк масив B розм. n*n
MnojMartixMas(A,B,C, n); // множення матриць C=A x B; розмірність n*n
PrintMas(C,n); // друк масив C розм. n*n
delete(A); delete(B); delete(C); // звільняємо пам'ять
system ("PAUSE");
return 0;
}
andron написав:Вася, помоги с прогой!! Задано символьні файли f1 і f2. Записати у файл f3 усі початкові символи файлів f1 і f2, що збігаються.
Староста написав:Визначити клас, який реалізує множину. Визначити методи включення та виключення елементу, а також перевантажити операції додавання (об’єднання множин), множення (переріз множин), віднімання (різниця множин).
Cherokee написав:Вась поможи будь ласка!!!!!!!!!!!
Визначити клас - банк рахунків за комунальні послуги. Реалізувати можливість прийняття оплати по рахунку, сортування рахунків за різними ознаками - боргом на рахунку, видом рахунку (оплата електрики, води або газу), кодом платника, адресою платника.
заранее пасіба
// library.cpp : Defines the entry point for the console application.
//
/*
Описание предметной области
Вы являетесь руководителем библиотеки. Ваша библиотека решила зарабатывать деньги,
выдавая напрокат некоторые книги, имеющиеся в небольшом количестве экземпляров. Вашей задачей
является отслеживание финансовых показателей работы библиотеки.У каждой книги, выдаваемой в прокат,
есть название, автор, жанр.В зависимости от ценности книги Вы определили для каждой из них залоговую
стоимость (сумма, вносимая клиентом при взятии книги напрокат ) и стоимость проката (сумма, которую
клиент платит привозврате книги, получая назад залог). В библиотеку обращаются читатели. Все читатели
регистрируются в картотеке, которая содержит стандартные анкетные данные (фамилия, имя, отчество, адрес,
телефон ). Каждый читатель может обращаться в библиотеку несколько раз.
Все обращения читателей фиксируются, при этом по каждому факту выдачи книги запоминаются дата выдачи и ожидаемая дата
возврата.
Таблицы
Книги (Код книги, Название, Автор, Залоговая стоимость, Стоимость проката, Жанр ).
Читатели (Код читателя, Фамилия, Имя, Отчество, Адрес, Телефон ).
Выданные книги (Код книги, Код читателя, Дата выдачи, Дата возврата ).
Развитие постановки задачи
Теперь ситуация изменилась. Несложный анализ показал, что стоимость проката книги должна зависеть не только
от самой книги, но и от срока ее проката. Кроме того, необходимо добавить систему штрафов за вред, нанесенный
книге и систему скидок для некоторых категорий читателей. Внести в структуру таблиц изменения, учитывающие
эти факты, и изменить существующие запросы. Добавить новые запросы.
++ Штраф, Строк проката
*/
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
//================================================================================================
int confirm(){// функція виводить підтвердження на екран
char key; // зчтьувана клавіша
do // цикл
{
cout<<endl<<" Confirm [Y/N]? "<<endl;
key=getch();
cout<<key;
} while (key!='n' && key!='N' && key!='Y' && key!='y' ); // якщо натиснуто одну з перелічених клавіщ - вийти з циклу
if (key=='y' || key=='Y') return 1; else return 0; //якщо y - повернути 1, інакше - 0
}
long EnterNumber(long max){ // функція повертає зчитане введене з клавіатури число, і в випадку, якщо число не з діапазону [0;max] просить користувача, переввести число
long n; // в цю змінну буде зчитуватись число введенне з клавіатури
do{
cout<<endl<<"Enter number [ 0 - "<<max-1<<" ] :";
cin>>n;
if (n<0 || n>max-1) {cout<<endl<<" ERROR!!! "<<endl;}
}while (n<0 || n>max-1); // умова виходу з циклу
return n; // воертає ввдеене число
}
//====
class Tbooks{
// Книги (Код книги, Название, Автор, Залоговая стоимость, Стоимость проката, Жанр ).
public :
char nazvanie[200];
char avtor[200];
double zalogovaya_stoimost, stoimost_prokata;
char janr[200];
int EnterInfo(){ // функція записує інформацію в необхідні елементи структури
char key; // зчитувана клавіша
do // головний цикл
{
fflush (stdin); // зкидуємо буфер
cout<<"Enter nazvanie : "; // вивід підказкт
cin.getline(&nazvanie[0],80); // зчитуємо строку
cout<<endl;
cout<<"Enter avtor : ";
cin.getline(&avtor[0],80);
cout<<endl;
cout<<"Enter janr : ";
cin.getline(&janr[0],80);
cout<<endl;
cout<<"Enter zalogovaya stoimost : ";
cin>>zalogovaya_stoimost; // зчитуємо число
cout<<endl;
cout<<"Enter stoimost prokata : ";
cin>>stoimost_prokata;
cout<<endl;
do{ // цей цикл потрібний для підтвердження
cout<<"Vvestu zminu? Y - TAK, N - Ni, R - povtorutu"<<endl<<endl; //
key=getch(); // зчитуємо калвішу
// умова виходу - одна з нажатих клавіш (Y, N, R)
} while (key!='n' && key!='N' && key!='Y' && key!='y' && key!='r' && key!='R');
} while (key=='R' || key=='r'); // якщо нажата R - тоді повторюємо
if (key=='Y' || key=='y') return 1; // якщо нажата Y - функція повертає 1
else return 0; //інакше 0
}
int ShowInfo(){ // функція показує інформацію про елементи структури
fflush (stdin); // очищаємо буфер клавіатури
cout<<"Nazvanie : "<<nazvanie;
cout<<endl;
cout<<"Avtor : "<<avtor;
cout<<endl;
cout<<"Janr : "<<janr;
cout<<endl;
cout<<"Zalogovaya stoimost : "<<zalogovaya_stoimost;
cout<<endl;
cout<<"Stoimost prokata : "<<stoimost_prokata;
cout<<endl;
fflush (stdin); // очищає буфер клавіатури
return 0;
}
};
//================================================================================================
class Treaders{
//Читатели (Код читателя, Фамилия, Имя, Отчество, Адрес, Телефон ).
public:
char familia[200];
char uma[200];
char ot4estvo[200];
char adres[200];
char tel[200];
int EnterInfo(){
char key;
do
{
fflush (stdin);
cout<<"Enter faminia : ";
cin.getline(&familia[0],80);
cout<<endl;
cout<<"Enter uma : ";
cin.getline(&uma[0],80);
cout<<endl;
cout<<"Enter ot4estvo : ";
cin.getline(&ot4estvo[0],80);
cout<<endl;
cout<<"Enter adres : ";
cin.getline(&adres[0],80);
cout<<endl;
cout<<"Enter telefon : ";
cin.getline(&tel[0],80);
cout<<endl;
do{
cout<<"Vvestu zminu? Y - TAK, N - Ni, R - povtorutu";
key=getch();
} while (key!='n' && key!='N' && key!='Y' && key!='y' && key!='r' && key!='R');
} while (key=='R' || key=='r');
if (key!='Y' || key!='y') return 1; else return 0;
}
int ShowInfo(){
fflush (stdin);
cout<<"Faminia : "<<familia;
cout<<endl;
cout<<"Uma : "<<uma;
cout<<endl;
cout<<"Ot4estvo : "<<ot4estvo;
cout<<endl;
cout<<"Adres : "<<adres;
cout<<endl;
cout<<"Telefon : "<<tel;
cout<<endl;
fflush (stdin);
return 0;
}
};
//================================================================================================
class Tvidanieknigi{
// Выданные книги (Код книги, Код читателя, Дата выдачи, Дата возврата ).
public:
unsigned long book_code; // код книжки
unsigned long reader_code; // код читача
char data_vida4i[200];
char data_vozvrata[200];
//++++++++++++++++++++++++++++++++++++++++++// Додаткове завдання
double cena_za_dni;
double shtraf;
//++++++++++++++++++++++++++++++++++++++++++//
int EnterInfo(long maxbooks,long maxreaders){
char key;
do
{
fflush (stdin);
cout<<"Enter book code : ";
book_code=EnterNumber(maxbooks);
cout<<endl;
cout<<"Enter reader code : ";
reader_code=EnterNumber(maxreaders);
cout<<endl;
fflush(stdin);
cout<<"Enter data vida4i : ";
cin.getline(&data_vida4i[0],80);
cout<<endl;
fflush(stdin);
cout<<"Enter data vozvrata : ";
cin.getline(&data_vozvrata[0],80);
cout<<endl;
fflush(stdin);
cout<<"Enter stoimost arendu : ";
cin>>cena_za_dni;
cout<<endl;
fflush(stdin);
cout<<"Enter straf : ";
cin>>shtraf;
cout<<endl;
do{
cout<<"Vvestu zminu? Y - TAK, N - Ni, R - povtorutu"<<endl<<endl;
key=getch();
} while (key!='n' && key!='N' && key!='Y' && key!='y' && key!='r' && key!='R');
} while (key=='R' || key=='r');
if (key!='Y' || key!='y') return 1; else return 0;
}
int ShowInfo(){
fflush (stdin);
cout<<"Book code : "<<book_code;
cout<<endl;
cout<<"Reader code : "<<reader_code;
cout<<endl;
cout<<"Data vida4i : "<<data_vida4i;
cout<<endl;
cout<<"Data vozvrata : "<<data_vozvrata;
cout<<endl;
cout<<"Stoimost arendu : "<<cena_za_dni;
cout<<endl;
cout<<"Enter straf : "<<shtraf;
cout<<endl;
fflush (stdin);
return 0;
}
};
//===============================================================================================
Tbooks books[10000]; // масив книжок
Treaders readers[10000]; // масив читачів
Tvidanieknigi vidanieknigi[10000]; // масив виданих книг
unsigned long books_count=0, readers_count=0, vidanieknigi_count=0;
//= START OF TABLE1 ======================================================
void Table1_add(){// Додаємо запис
Tbooks temp; // створюємо тимчасову змінну, для запису інформації
cout<<"Add record "<<endl;
if (temp.EnterInfo()){ // ячитуємо у користувача дані в temp, і якщо EnterInfo повертає "1" - то користучач підтвердив додавання змін
books[books_count++]=temp;// записуємо змінні і інкрементуємо кількість записів
}
}
void Table1_edit(){ // редагування запису
system("cls"); // очищуємо екран
long n;
if (books_count==0){ // якщо немає записів
cout<<endl<<" ZAPISEY NE NAYDENO!"<<endl;
system("PAUSE");
return ;
}
n=EnterNumber(books_count); // просимо користувача ввести номер
Tbooks temp=books[n]; // створюємо тимчасову змінну і записуємо в неї вибраний користувачем запис
temp.ShowInfo(); // показуємо інформацію про запис
system("pause");
if (temp.EnterInfo()){ // аналогічно до попереднього випадку
books[n]=temp;
system("PAUSE");
}
}
void Table1_show(){ // покузуємо всі записи
system("cls");
if (books_count==0){
cout<<endl<<" ZAPISEY NE NAYDENO!"<<endl;
system("PAUSE");
return ;
}
for (int i = 0 ; i < books_count ; i++){ // виводимо записи
cout<<" Info # "<<i<<endl;
books[i].ShowInfo();
if ((i+1)%3==0) system("pause"); // якщо виведено кожний трейтый запис - робимо затримку
}
system("pause");
}
void Table1_delete(){ // видаляємо запис
long n;
if (books_count==0){
cout<<endl<<" ZAPISEY NE NAYDENO!"<<endl;
system("PAUSE");
return ;
}
system("cls");
cout<<"Delete record "<<endl;
n=EnterNumber(books_count);
books[n].ShowInfo();
;
if (confirm()){ // якщо користувач підтвердив видаленння - видаляємо
for (int i = n+1 ; i<books_count ; i++){
books[i-1]=books[i]; // зміщуємо записи (тот на якому стоїть запис буде стертий записом вище)
}
books_count--; // декрементуємо кількість записів
}
}
//= END OF TABLE1 ======================================================
//= START OF Table2 ======================================================
void Table2_add(){
Treaders temp;
cout<<"Add record "<<endl;
if (temp.EnterInfo()){
readers[readers_count++]=temp;
}
}
void Table2_edit(){
system("cls");
long n;
if (readers_count==0){
cout<<endl<<" ZAPISEY NE NAYDENO!"<<endl;
system("PAUSE");
return ;
}
n=EnterNumber(readers_count);
Treaders temp=readers[n];
temp.ShowInfo();
system("pause");
if (temp.EnterInfo()){
readers[n]=temp;
system("PAUSE");
}
}
void Table2_show(){
system("cls");
if (readers_count==0){
cout<<endl<<" ZAPISEY NE NAYDENO!"<<endl;
system("PAUSE");
return ;
}
for (int i = 0 ; i < readers_count ; i++){
cout<<" Info # "<<i<<endl;
readers[i].ShowInfo();
if ((i+1)%3==0) system("pause");
}
system("pause");
}
void Table2_delete(){
long n;
if (readers_count==0){
cout<<endl<<" ZAPISEY NE NAYDENO!"<<endl;
system("PAUSE");
return ;
}
system("cls");
cout<<"Delete record "<<endl;
n=EnterNumber(readers_count);
readers[n].ShowInfo();
;
if (confirm()){
for (int i = n+1 ; i<readers_count ; i++){
readers[i-1]=readers[i];
}
readers_count--;
}
}
//= END OF Table2 ======================================================
//= START OF TABLE3 ====================================================
void Table3_add(){
Tvidanieknigi temp;
cout<<"Add record "<<endl;
if (temp.EnterInfo(books_count,readers_count)){
vidanieknigi[vidanieknigi_count++]=temp;
}
}
void Table3_edit(){
system("cls");
long n;
if (vidanieknigi_count==0){
cout<<endl<<" ZAPISEY NE NAYDENO!"<<endl;
system("PAUSE");
return ;
}
n=EnterNumber(vidanieknigi_count);
Tvidanieknigi temp=vidanieknigi[n];
temp.ShowInfo();
system("pause");
if (temp.EnterInfo(books_count,readers_count)){
vidanieknigi[n]=temp;
system("PAUSE");
}
}
void Table3_show(){
system("cls");
if (vidanieknigi_count==0){
cout<<endl<<" ZAPISEY NE NAYDENO!"<<endl;
system("PAUSE");
return ;
}
for (int i = 0 ; i < vidanieknigi_count ; i++){
cout<<" Info # "<<i<<endl;
vidanieknigi[i].ShowInfo();
if ((i+1)%3==0) system("pause");
}
system("pause");
}
void Table3_delete(){
long n;
if (vidanieknigi_count==0){
cout<<endl<<" ZAPISEY NE NAYDENO!"<<endl;
system("PAUSE");
return ;
}
system("cls");
cout<<"Delete record "<<endl;
n=EnterNumber(vidanieknigi_count);
vidanieknigi[n].ShowInfo();
;
if (confirm()){
for (int i = n+1 ; i<vidanieknigi_count ; i++){
vidanieknigi[i-1]=vidanieknigi[i];
}
vidanieknigi_count--;
}
}
//= END OF Table3 ======================================================
void ShowMainMenu(){
char key;
do{
system("cls"); // очищаємо екран
cout<<"PROGRAM MAIN MENU:"<<endl; // виводимо меню програми
cout<<" "<<endl;
cout<<" q) ADD BOOKS"<<endl;
cout<<" w) EDIT BOOKS"<<endl;
cout<<" e) DELETE BOOKS"<<endl;
cout<<" r) SHOW BOOKS"<<endl;
cout<<" "<<endl;
cout<<" a) ADD READER"<<endl;
cout<<" s) EDIT READER"<<endl;
cout<<" d) DELETE READER"<<endl;
cout<<" f) SHOW READER"<<endl;
cout<<" "<<endl;
cout<<" z) ADD VK"<<endl;
cout<<" x) EDIT VK"<<endl;
cout<<" c) DELETE VK"<<endl;
cout<<" v) SHOW VK"<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" Press ESC to EXIT;"<<endl;
cout<<""<<endl;
key=getch(); // зчитуємо клавішу
switch (key){ // оброблюємо натиснуту кнопку
case 'q': Table1_add(); break;
case 'w': Table1_edit(); break;
case 'e': Table1_delete();break;
case 'r': Table1_show(); break;
case 'a': Table2_add(); break;
case 's': Table2_edit(); break;
case 'd': Table2_delete();break;
case 'f': Table2_show(); break;
case 'z': Table3_add(); break;
case 'x': Table3_edit(); break;
case 'c': Table3_delete();break;
case 'v': Table3_show(); break;
}
}
while (key!=27);// якщо нажата клавіша ESC - виходимо
}
int main(int argc, char* argv[])
{
ShowMainMenu(); // показуємо головне меню програми
//system("pause");
return 0;
}
Зараз переглядають цей форум: Немає зареєстрованих користувачів і 9 гостей