Jump to content

Reuniunea, Intersectia, Diferenta A Doua Multimi


Courage

Recommended Posts

  • Moderators

Multimea A este formata din numere naturale cuprinse intre 0 si 1000. Elementele multimii A sunt stocate in fisierul multA.txt. Multimea B este si ea formata din numere naturale cuprinse intre 0 si 1000, iar elementele ei sunt stocate in fisierul multB.txt. Sa se dezvolte un program care realizeaza urmatoarele:

a)incarca elementele multimii A în program astfel încat aceasta sa ocupe cat mai putina memorie

b) afiseaza elementele multimii A

c) incarca elementele multimii B in program astfel incat aceasta sa ocupe cat mai putina memorie

d) afiseaza elementele multimii B

e) creeaza multimea R = reuniunea celor doua multimi. Scrie elementele acestei multimi pe ecran si in fisierul multR.txt.

f) creeaza multimea I = intersectia celor doua multimi Scrie elementele acestei multimi pe ecran si în fisierul multI.txt.

g) creeaza multimea D = diferenta celor doua multimi. Scrie elementele acestei multimi pe ecran si in fisierul multD.txt.

Rezolvare:


#include<string.h>

#include<conio.h>

#include<stdlib.h>

#include<stdio.h>


 int main(void)

 {

     FILE *f,*g;

     int a,i,mask=1,j;

     char mult1[125],mult2[125];


     f=fopen("multA.txt","rt");

     for(i=0;i<125;i++)

         mult1[i]=0;

     while(!feof(f))

     {

         mask=1;

         fscanf(f,"%d", &a);

         mult1[a/8]=mult1[a/8] | mask<< a%8;

         //printf("\n%d",mult1[a/8]);

         //getch();

     }


     for(i=0;i<125;i++)

     {

         for(j=0;j<=7;j++)

         {

             if( (1<<j) & mult1[i] )

                 printf("%d ,", i*8+j);


         }

     }



     printf("\n");


     g=fopen("multB.txt","rt");

     for(i=0;i<125;i++)

         mult2[i]=0;

     while(!feof(g))

     {

         mask=1;

         fscanf(g,"%d", &a);

         mult2[a/8]=mult2[a/8] | mask<< a%8;

         //printf("\n%d",mult1[a/8]);

         //getch();

     }


     for(i=0;i<125;i++)

     {

         for(j=0;j<=7;j++)

         {

             if( (1<<j) & mult2[i] )

                 printf("%d ,", i*8+j);


         }

     }

 //reuniunea

     printf("\n reuniunea:  ");

     for(i=0;i<125;i++)

     {

         for(j=0;j<=7;j++)

         {

             if( ((1<<j) & mult2[i]) || ((1<<j) & mult1[i]) ) 

                 printf("%d ,", i*8+j);


         }

     }

     //intersectia 

     printf("\n intersectia:  ");

     for(i=0;i<125;i++)

     {

         for(j=0;j<=7;j++)

         {

             if( ((1<<j) & mult2[i]) && ((1<<j) & mult1[i]) ) 

                 printf("%d ,", i*8+j);


         }

     }


     //diferenta

     printf("\n diferenta A-B:  ");

     for(i=0;i<125;i++)

     {

         for(j=0;j<=7;j++)

         {

             if( !((1<<j) & mult2[i]) && ((1<<j) & mult1[i]) ) 

                 printf("%d ,", i*8+j);


         }

     }


     getch();

 }
Fisierul multA.txt va contine:
12

15

100

501

999
Fisierul multB.txt va contine:
112

12

15

51

88

sursa: tutorialehd.info

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.