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

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

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

Повідомлення Obi-Van » 17 березня 2011, 17:36

conio.rar
conio
(2.63 Кб) Завантажено 482 разів
Гринько Олександр, 1 група
Аватар користувача
Obi-Van
 
Повідомлень: 80
З нами з: 20 лютого 2011, 19:56

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

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

Лаба 3. Варіант 5.
Код: Виділити все
     /* Лаба 3. Варіант 5
Написати функцію, яка для заданого цілого числа x, друкує кількість пар однакових бітів.
*/

#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
// підключаємо все необхідне для роботи програми
void print_bits (unsigned n)
{ // функція друкує біти, функція з лекії
   int bit; // змінна, в якій буде знаходитись поточне значення кількості бітів
      for (bit = sizeof(n)*4-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; // перевод на нову строчку
}
void countpar_bits (unsigned n)
{ // функція рахує кількіть пар, від лівої правої одиниці і до останнього правого розряду
 // приймає ціле беззнакове двухбайтове значення
     int count=0;   // наш лічильник пар       
     do // цикл з післяумовою
     {
         if (                        // якщо
              n & 01                 // самий правий біт == 1
              &&                     // і
              ( (n>>1) &01 )         // і передостанній правий біт == 1
            ||                       // або
              (!(n & 01))            // самий правий біт == 0
              &&                     // і
              (!( (n>>1) &01 ) )     // самий правий біт == 0                   
            )     
            { // тоді ми знайшли пару
                   count++; // кількість пар ++
                   n>>=2;   // здвигаємо на два біти
            }
            else // інакше
            {
                n>>=1; // здвигаємо на один біт
            }   
     }
     while (n != '\0');  // виходимо, коли ми пройдемо всі біти
     cout<<"\nNumber of xx = " << count << endl;  // виводимо на екран результат
}
main ()
{
   unsigned num; // створюємо цілу беззнакову двохбайтову змінну
   cout << "Input int" << endl;   // підсказка користувачу
   cin >> num;   // зчитуємо число
   print_bits (num); // друкуємо біти
   
   countpar_bits (num); // виводимо кількість пар бітів     

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

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

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

Код: Виділити все
     /* Ефтменко. Лаба 3. Варіант 10
Написати функцію, яка повертає число, одерєжане з цілого числа x, в якому циклічно зсунуті n розрядів вправо. Перевыряти правильність значення n.
*/

#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
// підключаємо все необхідне для роботи програми
void print_bits (unsigned n)
{ // функція друкує біти, функція з лекії
   int bit; // змінна, в якій буде знаходитись поточне значення кількості бітів
      for (bit = sizeof(n)*4-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 rightcycle_bits (unsigned n,int bits)
{
         for (int i = 0 ; i < bits ; i++)
         {
             n>>=1;
         }
         return n;
}
main ()
{
   unsigned num; // створюємо цілу беззнакову двохбайтову змінну
   int n;
   cout << "Input int" << endl;   // підсказка користувачу
   cin >> num;   // зчитуємо число
   print_bits (num); // друкуємо біти
   
   do
   {
        cout << "Input n" << endl;   // підсказка користувачу
        cin >> n;   // зчитуємо число
        if (n<=0) {cout<<"ERROR : N>0"<<endl;}
   }while (n<=0);
   
   num=rightcycle_bits (num,n);
   print_bits (num); // друкуємо біти

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

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

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

Код: Виділити все
     /* Ефименко. Лаба 3. Варіант 4
Написати функцію,  яка для заханого цілого числа x, обчислює кількість четвірок одиничних бітів.
*/

#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
// підключаємо все необхідне для роботи програми
void print_bits (unsigned n)
{ // функція друкує біти, функція з лекії
   int bit; // змінна, в якій буде знаходитись поточне значення кількості бітів
      for (bit = sizeof(n)*4-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; // перевод на нову строчку
}
void countpar_bits (unsigned n)
{ // обчислює кількість четвірок одиничних бітів
 // приймає ціле беззнакове двухбайтове значення
     int count=0;   // наш лічильник пар       
     do // цикл з післяумовою
     {
         if (                        // якщо
              n & 01                 // перший з права біт == 1   
              &&                     // і
              (n>>1) & 01            // другий з права біт == 1   
              &&                     // і
              (n>>2) & 01            // трейтій з права біт == 1   
              &&                     // і
              (n>>3) & 01            // четвертий з права біт == 1   
                           
            )     
            { // тоді ми знайшли пару
                   count++; // кількість пар ++
                   n>>=4;   // здвигаємо на чотири біти
            }
            else // інакше
            {
                n>>=1; // здвигаємо на один біт
            }   
     }
     while (n != '\0');  // виходимо, коли ми пройдемо всі біти
     cout<<"\nNumber of '1111' = " << count << endl;  // виводимо на екран результат
}
main ()
{
   unsigned num; // створюємо цілу беззнакову двохбайтову змінну
   cout << "Input int" << endl;   // підсказка користувачу
   cin >> num;   // зчитуємо число
   print_bits (num); // друкуємо біти
   
   countpar_bits (num); // виводимо кількість пар бітів     

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

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

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

Кроме 6того варианта, кому то еще какие то варинаты надо делать? Говорите щас, или молчите навсегда ))
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

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

Повідомлення Batarchuk » 17 березня 2011, 23:29

Вася, можно ли это как-то залить на комп и размножить http://lib.dnu.dp.ua:8001/l/%D0%9A%D0%B ... ain.htm#13
Група 3. Батарчук Сергій.
Аватар користувача
Batarchuk
 
Повідомлень: 294
З нами з: 18 жовтня 2010, 18:18
Звідки: Сватове

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

Повідомлення RUS » 17 березня 2011, 23:42

Вася, большое спасибо!!!)))
Група 1. Дибовський Руслан.
Аватар користувача
RUS
 
Повідомлень: 31
З нами з: 23 листопада 2010, 23:01

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

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

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

#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
// підключаємо все необхідне для роботи програми

// прототипи функцій ?! точно не пам;ятаю як Свтілана Володимирівна казала...
void print_bits (unsigned );
int replace1_bits (unsigned ,int ,int );
//

void print_bits (unsigned n)
{ // функція друкує біти, функція з лекії
   int bit; // змінна, в якій буде знаходитись поточне значення кількості бітів
      for (bit = sizeof(n)*4-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; // перевод на нову строчку
}
int replace1_bits (unsigned n,int n1,int p1)
{ // функція заміняє   n1 бітів на '1' починаючи з p1
  // функція повертає результат заміни
 
     unsigned mnoj=0; // наш множник (тобто те що буде побітно множитись)
     for (int i=0; i < n1 ; i++)
     { // цикл. пишемо n1 одиниць     
         mnoj<<=1;
         mnoj=mnoj | 1;
     }
     
     // нумерація бітів починається з нуля зправа
     for (int i=0; i < p1 ; i++)
     { // дописуємо p1 нулів     
         mnoj<<=1;
     } 
     return n | mnoj; // повертаємо значення заміни
/*
для прикладу
n= 12 (00001100)
n1 = 4
p1 = 1
ітак

перший цикл добавляє в mnoj таке
-> mnoj = 1111;

другий цикл добавляє в mnoj таке
-> mnoj = 11110;

І return виконує таку дію
->
00001100
|                // логічне або (таблиця істинності)
00011110
=
00011110         = 30


*/
}
main ()
{
   unsigned num; // створюємо цілу беззнакову двохбайтову змінну
   int n,p;
   cout << " Enter NUM : ";   // підказка користувачу
   cin >> num;   // зчитуємо число
   print_bits (num); // друкуємо біти
   
   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;
   result=replace1_bits(num,n,p); //
   print_bits (result); // друкуємо біти
   cout<<" -> RESULT IS : "<<result<<endl;
   system ("PAUSE");
   return 0;
}
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

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

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

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

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

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

Batarchuk
Вася, можно ли это как-то залить на комп и размножить http://lib.dnu.dp.ua:8001/l/%D0%9A%D0%B ... ain.htm#13


Так покатит???
Ворованая книжка ;) Герберт Шилдт :o
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

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

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

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

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