Jump to content

Recommended Posts

  • Moderators
Posted

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

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • 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.