Об'єктно-Орієнтоване Програмування

Тему створювати, наприклад, так: <[Група 2] Молекулярна фізика>

Re: Об'єктно Орієнтоване Програмування

Повідомлення Batarchuk » 18 березня 2011, 19:13

Спасибо, покатит..
Група 3. Батарчук Сергій.
Аватар користувача
Batarchuk
 
Повідомлень: 294
З нами з: 18 жовтня 2010, 18:18
Звідки: Сватове

Re: Об'єктно Орієнтоване Програмування

Повідомлення Василь » 19 березня 2011, 05:46

Так, товарищи, все Ваши програмки, которые надо решать - писать в разделе Питання по домашці. Каждая программа - отдельная тема!
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Об'єктно Орієнтоване Програмування

Повідомлення Василь » 20 березня 2011, 10:32

Товарищи, кому, что надо делать на понедельник, позвоните мне или дайте свой мобильный номер и напишите задание... я сбился....
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Об'єктно Орієнтоване Програмування

Повідомлення Василь » 20 березня 2011, 22:37

Група 2. Лаба 3. Варіант 9. Віктор. Дядка )) Шифр "Цезаря".
/*
* Цю програму написав ГВА
* 20.03.2011 22:31
* Якщо ви берете код цієї програми, чи просто вивчаєте його
* то ви повинні мені допомогти з
* іншими предметами, чим можете, розшарити в англійській мові, матані, фізиці,
* молекулярці і т.д.. Чи допомогти написати якось контрольну ))
* Дякую за розуміння.
* Друга група. Лаба 3. Шифрування.
* Робить майже на відмінно.
* Проблеми: Дописує лишній символ в кінець. Не вистачає часу для того щоб розібратись
* Не перевіряється умова переповнення межі. Байт має межі[-128;127].
* Не відомо що буде коли зайде за межі... перевіряйте самі... а так
* взагалі працює на ключах від -30 до +30
*/

#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <iostream>
#include <strings.h>
#include <conio.h>

#include <iostream>
using namespace std;
void encoding(char *in, char *key, char *out)
{
ifstream f_in(in, ios::in | ios::binary);
ofstream f_out(out, ios::out | ios::binary);
if ( !f_in || !f_out ) {
cout << "ERROR of opening of a file.\n"; system("PAUSE"); return ;
}
char buf;
while (!f_in.eof()) {
f_in.read(&buf,1);
buf=buf+atoi(key);
f_out.write(&buf,1);
// cout<<buf;
}
f_in.close();
f_out.close();

cout<<"\n\n -> Encoding complate!\n\n";
}
void dencoding(char *in, char *key, char *out)
{
ifstream f_in(in, ios::in | ios::binary);
ofstream f_out(out, ios::out | ios::binary);
if ( !f_in || !f_out ) {
cout << "ERROR of opening of a file.\n"; system("PAUSE"); return ;
}
char buf;
while (!f_in.eof()) {
f_in.read(&buf,1);
buf=buf-atoi(key);
f_out.write(&buf,1);
// cout<<buf;
}
f_in.close();
f_out.close();

cout<<"\n\n -> Encoding complate!\n\n";
}
void k_read(char a[],char *b){
cout<<a<<" : ";
cin>>b;
}
int main(int argc, char *argv[])
{
char *in_filename=new char[80];
char *out_filename=new char[80];
char *key=new char[10];
char userkey;
do
{
system("cls");
cout<<"Group 2. Laba#3. Variant #9. by Gorbachenko V.A\
\nPress 1 to ecode\
\nPress 2 to decode\
\nYour choise : ";
do{
userkey=getch();
}while (userkey!='1' && userkey!='2');
cout<<userkey<<endl;

k_read("Enter IN filename",in_filename);
k_read("Enter KEY [INT ONLY]",key);
k_read("Enter OUT filename",out_filename);
if (userkey=='1'){
encoding(in_filename,key,out_filename);
}
else
{
dencoding(in_filename,key,out_filename);
}

cout<<"Press ESC to EXIT or other key to CONTINUE..."<<endl;
} while (getch()!=27);


system("PAUSE");
return 0;
}
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Об'єктно Орієнтоване Програмування

Повідомлення Василь » 21 березня 2011, 21:32

Код: Виділити все
/* Ефименко. Лаба 3. Варіант 8
 * Написати функцію, яка повертає число, одержане з цілого числа х, в якому
 * інвертовані n розрядів,  починаючи з позиції p, а решта розрядів залишені
 * без змін (крайній правий біт вважити нульовим). Перевіряти правильність
 * значень n та p.
*/

#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
// підключаємо все необхідне для роботи програми
void print_bits (unsigned n)
{ // функція друкує біти, функція з лекії
   int bit; // змінна, в якій буде знаходитись поточне значення кількості бітів
      for (bit = sizeof(n)*8-1; bit >= 0; bit--)
      // початкове значення bit = довжина змінної unsigned
      {
         if ((n >> bit) & 01)
         { // тут іде логічне множення... складно пояснити, але спробую...
           // (n >> bit) - здвигає на "bit" розрядів
           // & 01 - логічне множення - тобто, грубо кажучи кусає правіший біт
           // тут іде побітове множення(чи просто кажучи побітове "і"), для прикладу:           
           // 10101110001101   
           // &                побітове "і"
           // 00000000000001   тобто тут насправді (01)
           // =
           // 00000000000001   - цей результат позитивний, тобто більше нуля,
           //                    а значить, грубо кажучи == TRUE
           putchar ('1');
         }
         else
         {// іначе 0 - наприклад:
          //                        011010
          //                        &
          //                        000001
          //                        =
          //                        000000 - == FALSE або нулю - негативний
         
           putchar ('0');
         }
         
            if (bit % 4 == 0) putchar (' '); // якщо біт, на якому стоїть лічильник кратний чотирьом, то ставимо пробіл
      }
   cout<<endl; // перевод на нову строчку
}
unsigned replace_bits (unsigned x, unsigned p, unsigned n)
{
     unsigned mnoj=0, z;
     int bit; // змінна, в якій буде знаходитись поточне значення кількості бітів
     for (bit = sizeof(n)*8-1; bit >= 0; bit--)
     {

//        cout<<mnoj<<endl;
//        if ((n >> bit) & 01)
//          cout<<((x>>bit) & 01);
       
//        print_bits(z);
        if (bit>=p && bit<p+n)
        {
               z=((~(x>>bit) & 01));
               mnoj=(mnoj<<1) | z;
        }
        else
        {
               z=(((x>>bit) & 01));
               mnoj=(mnoj<<1) | z;
        }
      }
      cout<<endl;
      return mnoj;
}
main ()
{
   unsigned num; // створюємо цілу беззнакову 4-байтову змінну
   cout << "Input X" << endl;   // підсказка користувачу
   cin >> num;   // зчитуємо число
   print_bits (num); // друкуємо біти
   int n,p;
   do
   {
      cout << " Enter P [numeracia s nula]: " ;   // підказка користувачу
      cin >> p;   // зчитуємо число
      if (p<0) {cout<<" -> ERROR : P must be >=0"<<endl;}
     
   } while (p<0);
   
   do
   {
      cout << " Enter N : " ;   // підказка користувачу
      cin >> n;   // зчитуємо число
      if (n<=0) {cout<<" -> ERROR : N must be >=1"<<endl;}
     
   } while (n<=0);


   
   unsigned result = replace_bits (num,p,n); // виводимо кількість пар бітів     
   print_bits (result); // друкуємо біти
   system ("PAUSE");
   return 0;
}
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08


Re: Об'єктно Орієнтоване Програмування

Повідомлення Василь » 01 квітня 2011, 06:00

Код: Виділити все
/* Лаба 4. Варіант 4  Матриці */
#include <iostream>
#include <cstdlib>  // тут rand (), srand ()
#include <stdio.h>
#include <conio.h>  //

using namespace std; // підключаємо все необхідне для роботи програми
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++){             
             if (1<=i && i<=j && j<=n){ // якщо виконується задана умова             
                  *(B+i*n+j)=1/double(2 * (i+1) - (j+1) + 3);
             }// якщо ні
             else{
                  *(B+i*n+j)=1/double(3 * (i+1) + (j+1) - 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;
}


Код: Виділити все
 /* Лаба 4. Варіант 3  Матриці */
#include <iostream>
#include <cstdlib>  // тут rand (), srand ()
#include <stdio.h>
#include <conio.h>  //

using namespace std; // підключаємо все необхідне для роботи програми
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++){             
             if (1<=i && i<=j && j<=n){ // якщо виконується задана умова             
                  *(B+i*n+j)=1/double((i+1)+(j+1)-1);
             }// якщо ні
             else{
                  *(B+i*n+j)=1/double((i+1)+(j+1)+1);                 
             }
         }
     }
     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;
}
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Об'єктно Орієнтоване Програмування

Повідомлення Василь » 01 квітня 2011, 09:13

Код: Виділити все
/*
 * Звіт
 * Горбаченка Василя Анатолійовича
 * Студента 1-го курсу. Радіофізичного факультету. Напрям підготовки: Прикладна фізика.
 * Група 3.
 * Лабораторна робота №3. Варіант 12.
 * Завдання:             
 */
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

using namespace std;

void print_bits (unsigned n)
{ // функція друкує біти, функція з лекії
   int bit; // змінна, в якій буде знаходитись поточне значення кількості бітів
      for (bit = sizeof(n)*8-1; bit >= 0; bit--)
      // початкове значення bit = довжина змінної unsigned
      {
         if ((n >> bit) & 01)
         { // тут іде логічне множення... складно пояснити, але спробую...
           // (n >> bit) - здвигає на "bit" розрядів
           // & 01 - логічне множення - тобто, грубо кажучи кусає правіший біт
           // тут іде побітове множення(чи просто кажучи побітове "і"), для прикладу:           
           // 10101110001101   
           // &                побітове "і"
           // 00000000000001   тобто тут насправді (01)
           // =
           // 00000000000001   - цей результат позитивний, тобто більше нуля,
           //                    а значить, грубо кажучи == TRUE
           putchar ('1');
         }
         else
         {// іначе 0 - наприклад:
          //                        011010
          //                        &
          //                        000001
          //                        =
          //                        000000 - == FALSE або нулю - негативний
         
           putchar ('0');
         }
         
            if (bit % 4 == 0) putchar (' '); // якщо біт, на якому стоїть лічильник кратний чотирьом, то ставимо пробіл
      }
   cout<<endl; // перевод на нову строчку
}
unsigned inverse_bits (unsigned x,unsigned y,int p,int n)
{
  unsigned result=~x; // инверт
  unsigned z=0;

//====================================================================================
  // Готовим ЗАЧИСТКУ
  for (int i = 0 ; i < n ; i++ )
  {// заполняем еденичками z в конец
      z <<=1;
      z = z | 1;
  }
  for (int i = 0 ; i < p ; i++ )
  {// заполняем ноликами z в конец
      z <<= 1;
  }
  // ЗАЧИСТКА готова
 
  // теперь наложим нашу зачистку на x
//  x = x | z;
 
  result=  ~ ( result | z ); // делаем зачистку "00000"  того места, которое мы будем записовать
//====================================================================================
  // Готовим ЗАЧИСТКУ
  for (int i = 0 ; i < n ; i++ )
  {// заполняем еденичками z в конец
      z <<=1;
      z = z | 1;
  }
  for (int i = 0 ; i < p ; i++ )
  {// заполняем ноликами z в конец
      z <<= 1;
  }
  // ЗАЧИСТКА готова
//==================================================================================== 
  //теперь приготовим те битики, которые нам надо заменить в спец формате со здвигом p
  z=0;
  for (int i = n-1 ; i >= 0 ; i-- ){
      z <<= 1;
      z = z | ( (y>>i) & 01 );     
  }

  for (int i = 0 ; i < p ; i++ ){
      z <<= 1; 
  }
//====================================================================================
  // теперь самый ответственный момент... Да, тот самый долгожданный ;)))
  result = result | z ;
//====================================================================================                                                                                         
// Усё. г.
  return result;
}

int main(){
   unsigned x, y; // створюємо цілу беззнакову двохбайтову змінну
   int n,p;
   cout << "Input x" << endl;   // підсказка користувачу
   cin >> x;   // зчитуємо число
   print_bits (x); // друкуємо біти
   
   cout << "Input y" << endl;   // підсказка користувачу
   cin >> y;   // зчитуємо число
   print_bits (y); // друкуємо біти   
   
   do
   {
        cout << "Input p" << endl;   // підсказка користувачу
        cin >> p;   // зчитуємо число
        if (p<=0) {cout<<"ERROR : N>0"<<endl;}
   }while (p<=0);
   do
   {
        cout << "Input n" << endl;   // підсказка користувачу
        cin >> n;   // зчитуємо число
        if (n<=0) {cout<<"ERROR : N>0"<<endl;}
   }while (n<=0);   
   
   print_bits (inverse_bits (x,y,p,n)); // друкуємо біти

   system ("PAUSE");
   return 0;
}

Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Об'єктно Орієнтоване Програмування

Повідомлення Ксюха Шаптала » 03 квітня 2011, 12:30

У кого-то есть методичка с/с++. Залейте плиз
Ксюха Шаптала
 
Повідомлень: 12
З нами з: 29 березня 2011, 17:29

Re: Об'єктно Орієнтоване Програмування

Повідомлення Василь » 04 квітня 2011, 15:40

Ксюха Шаптала написав:У кого-то есть методичка с/с++. Залейте плиз

Что есть ))
http://www.radfiz.org.ua/files/k1/s2/oop/efimenk_metodichka_oop_s2.zip
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Поперед.Далі

Повернутись до Семестр 2

Хто зараз онлайн

Зараз переглядають цей форум: Немає зареєстрованих користувачів і 25 гостей