Ergebnis 1 bis 17 von 17

Thema: C-Source code problem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    C-Source code problem

    Hi Leute !
    Bräuchte dringent eure Hilfe !
    Mein Prog läuft zwa aber nicht richtig!
    Immer Die Gleiche ausgabe(mögliche)!

    Hier der Code

    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    void main()
    {
    bool g=true;
    char text1[100];
    char text2[100];
    int c,d,a,b,e;
    printf("geben sie einen Text ein!");
    scanf("%s",&text1);
    printf("geben sie einen Text ein!");
    scanf("%s",&text1);
    c=strlen(text1);
    d=strlen(text2);
    if(c=d)
    {
    for(int x=0;x<c && g;x++)
    {
    a=text1[x];
    b=text2[x];
    for(e=x+1;e<c && g;e++)
    {

    if(a=text1[e])
    {
    if(b!= text1[e])
    {
    g=false;
    }
    }
    }
    }
    }
    if(g=true)
    {
    printf("Die Texte könnten gleich sein!");
    }
    if(g=false)
    {
    printf("Die texte könnten nicht gleich sein!");
    }
    getch();
    }

  2. #2
    Zitat Zitat von Lebkuchenmann
    printf("geben sie einen Text ein!");
    scanf("%s",&text1);
    printf("geben sie einen Text ein!");
    scanf("%s",&text1);
    Zweimal text1? Kann's sein, dass das dein Problem ist? text2 wird also nie initialisiert. Den Rest hab ich mir jetzt nicht durchgeschaut. Der Thread gehört übrigens in's Programmier-Forum.

    freundliche Grüße, Rolus

  3. #3
    Nein ist nicht prob könntest bitte noch weiter durchschauen wäre dringend!
    Muss an irgendeiner Schlleife liegen! Weil mit ein Buchstaben funkt es!
    Danke

    Geändert von Lebkuchenmann (03.03.2005 um 20:08 Uhr)

  4. #4
    Zitat Zitat von Lebkuchenmann
    if(g=true)
    {
    printf("Die Texte könnten gleich sein!");
    }
    if(g=false)
    {
    printf("Die texte könnten nicht gleich sein!");
    }
    Ouh, da ist auch schon der Nächste!
    "=" ist ein Zuweisungsoperator. Der Vergleichsoperator heißt "=="
    Wenn ich nochmal durchschauen soll, sag bescheid.
    Also Vergleiche sollte so lauten:
    Code:
    if(a == b)
    { 
      do_sth(); 
    }
    freundliche Grüße, Rolus

    Geändert von Rolus (03.03.2005 um 20:12 Uhr)

  5. #5
    Danke echt gut!
    Aber ich weiß nicht will nicht funken!

    So hier die Genau Angabe:

    Eine Möglichkeit der Verschlüsselung eines textes besteht darin, dass jedem Buchstaben des Alphetes genau ein Buchstabe zugeordnet wirt

    Zwei Folgen a und b wurden durch verschiedene Zuordnungen verschlüsselt. Schreibe ein Programm, welches beliebig oft zei Folgen einliest und feststellt , ob diese 2 Folgen Verschlüsselungen sein können oder nicht.

    Bsp A:Hallo
    B:hehe:tzwg \\nicht Verschlüsselt weil einmal l z ist und einmal l w ist !
    Danke im voraus für nächsten gefunden Fehler!

    Geändert von Jesus_666 (05.03.2005 um 09:32 Uhr) Grund: "Smilies deaktivieren" aktiviert, um Beispiel lesbar zu machen

  6. #6
    An einigen anderen Stellen war das "=" noch falsch benutzt. Und du hättest g noch auf false setzen sollen, wenn die Strings nicht gleich lang sind. Der Code sollte so aussehen, damit er funktioniert:
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    int main()
    {
    bool g=true;
    char text1[100];
    char text2[100];
    int c,d,e,a,b;
    printf("Geben sie einen Text ein!");
    scanf("%s",&text1);
    printf("Geben sie einen Text ein!");
    scanf("%s",&text2);
    c=strlen(text1);
    d=strlen(text2);
    if(c==d)
    {
     for(int x=0;x<c;x++)
     {
      a=text1[x];
      b=text2[x];
      if(a!=b)
      {
       g=false;
      }
     }
    }
    else
    {
     g=false;   
    }
    if(g==true)
    {
     printf("Die Texte könnten gleich sein!");
    }
    if(g==false)
    {
     printf("Die texte könnten nicht gleich sein!");
    }
    getch();
    }
    Also ich konnte ihn mit Erfolg testen.
    edit: Nee, doch nicht. Musste den Code nochmal ändern. So wie er jetzt da steht funzt er bei mir (glaube ich).

    freundliche Grüße, Rolus

    Geändert von Rolus (03.03.2005 um 20:40 Uhr)

  7. #7
    @ Lebkuchenmann:
    Bitte surf nicht mit halbem Hirn durch unser Forum.
    Wie man dir bereits sagte, ist der Thread hier falsch. Also schau dich erst um, bevor du ein Thema erstellst oder irgendwo postest.

    Desweiteren geb dir mehr Mühe bei der Formulierung deiner Beiträge.
    Ein alkoholkranker Brauereibesitzer hätte sich besser artikulieren können.

  8. #8
    Danke Danke Danke Danke !
    Das ist das beste Forum !
    Herlichen Dank Rolus !
    Super ! Danke !
    mfg Leckuchenmann

  9. #9
    Was mich stutzig macht, ist, dass ein Vergleich von

    char text1[100], text2[100];
    ...
    if (text1==text2) ...

    funktionieren soll ... eigentlich muesste das ja immer zu false evaluieren, da arrays im prinzip Pointer auf den Datenbereich sind, und die beiden Arrays garantiert nicht die selbe addresse haben ...

    ein !strcmp(text1, text2) sollte hier richtig(er) sein, bzw das, was du willst, naemlich zwei Texte Zeichen fuer Zeichen vergleichen

    Geändert von Ineluki (04.03.2005 um 01:44 Uhr)

  10. #10
    Zitat Zitat von Ineluki
    if (text1==text2)
    Das hat ja auch niemand so geschrieben. Sondern nur so:
    Code:
    a=text1[x];
    b=text2[x];
    if(a==b) //bzw. (text1[x] == text2[x])
    Und der Vergleich lässt sich durchführen, da a und b ja mit einem Wert aus einem der Arrays initialisiert sind und nicht mit einer Adresse. Der Vergleich if (text1==text2) gibt natürlich immer false zurück. Oder hab ich dich jetzt falsch verstanden?

    freundliche Grüße, Rolus

  11. #11
    Ja Danke an Alle! Prog funkt immer noch nicht !
    Hab den Code geändert aber trotzdem funkt es nicht!
    Danke wenn sich bitte noch einer Gedanken darüber machen könnte!
    mfg L*E*B*K*U*C*H*E*N*M*A*N*N

    Geändert von Lebkuchenmann (04.03.2005 um 21:13 Uhr)

  12. #12
    Ich habe zwar keine Ahnung von C (scherz, ich bin am lernen), aber ich habe einfach nur den Code von Rolus kopiert. Ergebnis: Wenn ich als text1 "abcdef" und als text2 "abcdef" eingebe, spuckt das Programm aus, dass die Texte gleich sind. Wenn ich bei text2 das "f" weglasse, sagt mir das Programm ganz richtig, dass die Texte nicht gleich sind.

    PS: Mensch, ich muss mich hier mal etwas öfter rumtreiben. Solche kleinen Programme sind gut zum Lernen!

  13. #13
    @Lebkuchenmann
    Beschreib dochmal genauer, was nicht funktioniert. Wenn keiner dein Problem sieht, kann es auch keiner finden. Und vielleicht solltest du auch mal den Sinn der Programms erklären. Soweit ich das verstanden habe, soll es zwei eingegebene Strings vergleichen. Und das tut es, so wie es in meinem Post steht.

    freundliche Grüße, Rolus

  14. #14
    Eins möcht ich sagen! Ich bin zwar kein C-Profi,aber auch kein Amateur!!!
    Ich will euch mein Problem anhand eines Bsp erklären:
    text1: hallo
    text2:werti // Kann keine Verschlüsselung sein weil den 1. l wird r zugeordent und den
    2. l wird t zugeordnet!

    Und die Angabe Stammt 1:1 von meinen Lehrer
    @ getöteter_ork: Wenns nur nach der Länge ginge hätte ich mir ja die ganzen for schleifen ersparen können!
    Ich Hoffe das ihr das Poblem versteht und mir helfen könnt!
    Danke

  15. #15
    das ganze kann sehr wohl einer verschluesslung sein, z.B. ueber eine Bitmaske, ein permutierendes Passwort oder ueber ein kaskadiertes Xor

    Wie ich dich verstanden habe, soll deine Verschluesslung jedoch ledigklich auf einer [b]bijektiven[b] Zuordnung der Form {a..z}->{a..z} basieren, oder ?

    Nun ja .. bisher hat jeder hier gedacht, dass du einfach auf die gleichheit von zwei Zeichenketten testen willst -__-

    Du solltest wirklich lernen, dich konkreter und klarer auszudruecken.

  16. #16
    Danke an alle die sich gedanken über mein programm gemacht haben!!!

    Hab endlich Hangman fertig programmiert und Zeit gehabt für dieses programm!!!

    Der Code sieht jetzt so aus:


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


    void main (void)
    {
    int i,j,l,l1, falsch=0;

    char a[100], b[100];

    printf("Bitte string1 eingeben");

    gets(a);

    printf("Bitte string2 eingeben");

    gets(b);

    l= strlen(a);

    l1= strlen(b);

    if( l1 == l)
    {
    for(i=0;i<l && falsch==0;i++)
    {
    for(j=0;j<l;j++)
    {
    if(a[i]==a[j])
    {
    if(b[i]!=b[j])
    {
    falsch=1;
    }
    }

    if(a[i]!=a[j])
    {
    if(b[i]==b[j])
    {
    falsch=1;
    }
    }
    }
    }

    if(falsch==1)
    {
    printf("falsch");
    }
    else
    {
    printf("richtig");
    }

    getch();
    }
    }

    Er funktioniert!!!
    Danke nochmals
    mfg Lebkuchenmann

  17. #17
    sry for OT, aber bitte benutze den [code]-Tag, wenn du Programmcodes postest. Da bleibt die Einrückung erhalten. Deine jetztigen Codes sind ziemlich unlesbar.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •