2017-11-12 2 views
-5

Ich bin neu in der C-Sprache. Angenommen, ich habe zwei Arrays a und bSo führen Sie den A-B-Set-Vorgang im C-Programm mithilfe der integrierten Bibliothek aus

int a[10] = { 1,2,3,4,5,6,7,8,9,0 }; 
int b[10] = { 1,3,5,7,9 }; 

und ich möchte a-b auszuführen, so dass ich alle Elemente des Arrays bekommen a die b in Array nicht vorhanden sind. In Ruby oder Python kann ich einfach a-b tun und das Ergebnis bekommen. Hier ist mein c-Code, den ich versucht habe, aber mein Code, der nicht funktioniert. Ich suche nach einer C-Bibliothek, die diese Operation für mich in einer Zeile tut. Ich habe auch library aber nicht sicher gefunden, wie man es einführt. Jede Art von Hilfe wird geschätzt.

#include<stdio.h> 
#define Max 100 

int m,n,i,j,k,p,q,r,s; 
int flag=1; 
char char1,char2,char3; 
void Difference(int *,int *,int ,int); 
void Display2(char ,char ,int); 

int a[10] = { 1,2,3,4,5,6,7,8,9,0 }; 
int b[10] = { 1,3,5,7,9 }; 
int c[10]; 

void Difference(int *a1,int *b1,int m1,int n1) 
{ 
    q=0; 
    p=0; 
    i=0; 
    for(k=0;k<m1;k++){ 
     flag=1; 
     for(j=0;j<n1;j++){ 
      if(b1[j]==a1[k]){ 
       flag=1; 
       q++; 
       break; 
      } 
      else{ 
       flag=0; 
      } 
     } 
     if(flag==0){ 
      c[p]=a1[k]; 
      p++; 
     } 
    } 
} 

void Display2(char ac,char bc,int m1) 
{ 
    printf("\nThe Difference Of Two Sets i.e '%c - %c' Is : { ",ac,bc); 
    r = m1 - q; 
    for(p=0;p<r;p++){ 
     printf("%2d",c[p]); 
    } 
    printf(" }"); 
} 


int main(){ 
    Difference(a,b,m,n); 
    Display2('A','B',m); 
    return 0; 
} 
+0

Off-topic zu finden. Lesen Sie einige [Einführung in Algorithmen] (https://en.wikipedia.org/wiki/Introduction_to_Algorithms) –

+0

BTW: Verwenden Sie '\ n' am Ende (nicht starten) von' printf' Formatzeichenfolge. Kompiliere mit allen Warnungen und Debug-Informationen: 'gcc -Wall -Wextra -g' mit [GCC] (http://gcc.gnu.org/). ** Verwenden Sie den Debugger 'gdb' ** –

+1

_" Ich habe versucht, aber keinen Erfolg "_ ist keine gültige Problemaussage. –

Antwort

1

kann ich denke, Sie m und n Variablen mit der richtigen Werte zu initialisieren vergessen. Fügen Sie m = 10; n = 5; hinzu, bevor Sie Difference anrufen und Ihr Code wird funktionieren.

Ich empfehle Ihnen auch, mehr lesbaren Code zu schreiben: bessere Benennung für Variablen, verwenden Sie einige Leerzeichen und vermeiden Sie globale Variablen.

Edit: In C++ können Sie schreiben:

#include <algorithm> 
#include <iostream> 
#include <iterator> 
#include <set> 

int main() { 
    std::set<int> a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
    std::set<int> b = { 1, 3, 5, 7, 9 }; 
    std::set<int> c; 

    std::set_difference(a.begin(), a.end(), b.begin(), b.end(), std::inserter(c, c.begin())); 

    for (const auto item : c) 
     std::cout << item << " "; 

    return 0; 
} 

Detaillierte Informationen über std::set_difference können here

+0

Danke, es hat funktioniert. Können Sie bitte eine eingebaute Bibliothek für die gleiche Operation vorschlagen? –

+0

Nein, ich kenne keine für C –

+0

Gibt es irgendeine Bibliothek für C++? –

Verwandte Themen