Probleme bei Arrayvergleich



  • Hallo liebe c Programmierer,
    Ich habe mich in einem Programm etwas verloren, in dem Ich versucht habe
    Primzahlen auf zwei arrays zu schreiben - auf dem ersten wurden diese mit
    einer eher heuristischen Methodik erzeugt - auf dem zweiten mit dem Sieb des
    Eratosthenes.

    Ich wollte dann das Programm (es ist sehr lang und unübersichtlich geworden)
    dahingehend erweitern, dass es die beiden arrays auf Gleichheit der Zahlen
    hin überprüft. Für das Konkrete Programm scheint es jedoch der falsche
    Weg dies mit Schleifen zu machen ,die die arrays durchiterieren --- geht im
    konkreten Fall nur sehr schwer,denn die Zeiger verschieben sich in beide
    Richtungen....

    Hier ein Ausschnitt der es vielleicht andeutet:

    /* Primstruktur */
    #include <stdlib.h>
    #include <stdio.h>
    #include<math.h>
    #include<time.h>
    #define SIZE_SIEB 200
    /*************************************************************************************
    Das Programm Primstruktur sucht nach einer Struktur von Primzahlen,
    die mit einer Additionsrotation fehlerunanfällig 
    neue Primazahlen herstellen kann.
    **************************************************************************************/
    
    int main( ) {
    int sieb [SIZE_SIEB],zahl ;
    int primfeld1[200000], primfeld2[20000],feldsetzer=0,verschiebungseffekt=0;
    int heuristikfehler=0,durchlaufzaehler=0;
    int feldlauefer1=0,feldlauefer2=0;
    unsigned int n,i,l;
    int feldgrenze=40,fuellzahl=22;
    unsigned int r[3]={2,3,5},q[40]={7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97},q2[40];
    /****************************************************************************************/
    unsigned int primadditionsvorgabe[40]={1,3,7,9,11,13,17,19,21,23,27,29,31,33,37,39,41,43,47,49,51,53,57,59,61,63,67,69,71,73,77,79,81,83,87,89,91,93,97,99};
    int success;                           //Variablen des letzten Programmteils
    
    /*****************************************************************************************/
    srand(time(NULL));
    printf("\nErzeugung von Primzahlen Bitte geben Sie die Zahlengrenze ein \
    von n\n\n");
    printf("n = ");
    scanf("%u",&n);
    
    do {
    /*
    
    *********************************************************************************************************************************************************
    
    */
    feldsetzer=0;verschiebungseffekt=0;feldlauefer1=0;feldlauefer2=0;heuristikfehler=0; // Damit immer wieder korekte Werte bei jedem Durchgang 
       if (n!=1) {																//ausgegeben werden-->Variablen zurücksetzen
          printf("Die Primzahlen bis %u sind:\n\n",n);
          for (i=0; i<3; i=i+1) {
    	//printf("%5u\t",r[i]);
    	primfeld1[feldlauefer1]=r[i];          //Die berechneten Primzahlen werden hier auf das primfeld1 gelegt, anstatt diese 
    	feldlauefer1++;                               //wie in der auskommentierten Zeile darüber auszugeben
          }
          l=0;
    	do {
    	    for (i=0; i<fuellzahl;i=i+1) {
    	    //printf("%5u\t",100*l+q[i]);
           	if(durchlaufzaehler==0) {primfeld1[feldlauefer1]=100*l+q[i];}
    	else {primfeld1[feldlauefer1]=100*l+q2[i];}
    	feldlauefer1++;
    	 }...............
    ........................
    

    Es wäre besser mit fertigen Funktionen zu arbeiten,
    die Ich auf die arrays richten kann und die diese automatisch auf Gleichheit
    überprüfen.
    Ich kenne aus den Vorlesungen aktuell nur die strcmp()Funktion
    Ich brauche aber eine Funktion die zwei arrays auf denen Zahlen sind vergleicht,
    und mir sagt welche Zahl in dem einen, nicht auf dem anderen ist u.s.w...;
    das würde das Programm vereinfachen...
    geht das mit strcmp und wenn wie oder was für Funktionen hat c die dafür
    gemacht sind ... weiß das jemand
    mfg ....



  • Das geht nicht mit strcmp.

    Du kannst dir memcmp ansehen: http://www.cplusplus.com/reference/cstring/memcmp/

    Allerdings kannst du da nur Un-Gleichheit feststellen.

    Du musst dir also deine eigene Vergleichsfunktion schreiben.

    Dein Einrückungsstil ist katastrophal.



  • Danke!!


Anmelden zum Antworten