Форум группы 750501

Объявление

Итак,форум набирает обороты.Оформление можете подстроить каждый под себя в профиле пользователя.P.S.При появлении на экране надписи "Сервис временно недоступен",жмите несколько раз ОБНОВИТЬ в браузере,и страница загрузится.Это просто глюк кривого хостинга)) (зато бесплатного)

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум группы 750501 » Курсачи,лабы,и другое » Лаба номер 2.


Лаба номер 2.

Сообщений 1 страница 12 из 12

1

// Даны два массива по n чисел.
// Вывести их a) пересечение
//                   b) объединение
//
//А вот сама программа

#include <stdio.h>
#include <conio.h>

#define N 100

int remove_duplicates(int* mas,int length,int* result);
void show_massive(int* mas,int length);
void sort(int* mas,int length);
int get_intersection(int* mas1,int length1,int* mas2,int length2,int* intersection);
int concat_massives(int* mas1,int length1,int* mas2,int length2,int* association);
void input_massive(const char* massive_name,int* mas,int length);
int input_size();

int main()
{
int a[N];                       // Pervonachal'nye massivy
int b[N];

int proc_a[N];                  // Obrabotannye massivy
int proc_b[N];

int intersect_massive[N];       // Massiv peresechenij
int result_massive[2*N];        // Massiv ob'edinenij

  int n = 0;    //ishodnyj razmer massivov
  int n1 = 0,n2 = 0;    //konechnye razmery massivov a i b
  int OK;

   do
   {
      clrscr();
      puts("Input size");
      fflush(stdin);
      OK=scanf("%d",&n);
   }
   while (!OK);

   input_massive("first",a,n);
   input_massive("second",b,n);

   clrscr();
   puts("Started massive A:");
   show_massive(a,n);
   puts("\nStarted massive B:");
   show_massive(b,n);

   sort(a,n);
   sort(b,n);
   n1 = remove_duplicates(a,n,proc_a);
   n2 = remove_duplicates(b,n,proc_b);

   int intersection_cnt = get_intersection(proc_a,n1,proc_b,n2,intersect_massive);
   puts("\n\nIntersection");
   show_massive(intersect_massive,intersection_cnt);

   int result_cnt = concat_massives(proc_a,n1,proc_b,n2,result_massive);

   sort(result_massive,result_cnt);
   result_cnt = remove_duplicates(result_massive,result_cnt,proc_a);
   puts("\nAssociation:");
   show_massive(proc_a,result_cnt);
   printf("\n");
   fflush(stdin);
   getch();
   return 0;
}

//Udalenie dublikatov
int remove_duplicates(int* mas,int length,int* result)
{
   int j = 0;
   if(!length)
   {
      return 0;
   }
   result[0] = mas[0];
   for (int i = 1;i<length;i++)
   {
      if(result[j] != mas[i])
      {
result[++j] = mas[i];
      }
   }
   return j+1;
}

//Vivod massiva
void show_massive(int * mas,int length)
{
   for (int i = 0;i < length;i++)
   {
      printf("%d ",mas[i]);
   }
}

//Sortirovka
void sort(int *mas,int length)
{
  for(int i = 0; i < length - 1;i++)
   {
      int temp = 0;
      for(int j = i + 1; j < length;j++)
      {
if (mas[i] > mas[j])
{
    temp = mas[i];
    mas[i] = mas[j];
    mas[j] = temp;
}
      }
   }
}

//Peresechenie massivov. (Dvoichnyj poisk)
int get_intersection(int *mas1,int length1,int * mas2,int length2,int *intersection)
{
   int median = 0;
   int intersection_cnt = 0;
   for (int i = 0;i < length1;i++)
   {
      int left_bound = 0;
      int right_bound= length2 - 1;
      do
      {
median = (left_bound + right_bound) / 2;
if (mas1[i] < mas2[median])
{
   right_bound = median - 1;
}
else if (mas1[i] > mas2[median])
{
  left_bound = median + 1;
}
else
{
    intersection[intersection_cnt++] = mas2[median];
    break;
}
      }
      while (left_bound <= right_bound);
   }
   return intersection_cnt;
}

//Soedinenie massivov
int concat_massives(int* mas1, int length1, int* mas2, int length2,int* result_massive)

{
   int i=0;
   for (;i<length1;i++)
   {
      result_massive[i]=mas1[i];
   }
   for (i=0;i<length2;i++)
   {
      result_massive[i+length1]=mas2[i];
   }
   return length1+length2;
}

//Vvod massiva
void input_massive(const char * massive_name,int* mas,int length)
{
   int i;
   int OK;
   for (i=0;i<length;i++)
   {
      printf("%s[%d]",massive_name,i);
      fflush(stdin);
      OK=scanf("%d",mas + i);
      if (!OK) i--;
   }
   mas[length]=0;
}

0

2

Если поймёте, и захотите использовать, прошу сказать об этом мне, так как я её ещё не сдавал.

0

3

Мдя....Вспоминается высказывание Луцика о том что программки первый семестр у нас будут мааленькие и ооочень компааактные=)

0

4

эй бля напишите мне лабу! народ! условие такое : по коналу идет не правильный код состоящий цифр 1 и 0пример:111 010 001 и его нужно переделать в правильный сокращенный пример 1 0 0 но он должен совподать с двумя цифрами неправильного развернутогою а потом правидьный сокращенный привести к виду 111 000 000! должно быть три одинаковые цыфры!
примерно это выглядеть на экране должно так:
101 001 110
1 0 1
111 000 111

0

5

Слушай ты, страдающий склерозом шакал, ты разве забыл, как я тебе решил эту лабу? Или тебе ещё нужно, чтобы я тебе весь код написал?

0

6

чувак я ее уже написал!

0

7

Тазик, я правильно понял, что ты использовал функции?
Если да, то нах их пока  нельзя использовать

0

8

ну дык это ж каробка блин=)

0

9

бля функции уже скоро будут такчто надо и с функциями работать!

0

10

Латинский квадрат порядка n называется квадратная таблица размера n*n каждая строка которой и каждый столбец которой содержит числа 1.2....n Дана целочисленная квадратная матрица; определить является ли она латинским квадратом. ПАМЯТЬ ОТВОДИТЬ ДИНАМИЧЕСКИ!

0

11

Решай сам...полезно

0

12

Сергей написал(а):

бля функции уже скоро будут такчто надо и с функциями работать!

Скоро и классы будут, так может на плюсах начнешь програмить?

0


Вы здесь » Форум группы 750501 » Курсачи,лабы,и другое » Лаба номер 2.