C Programmausgabe vergleichen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Hallo,

      schau mal hier: C Programmausgabe vergleichen. Dort wird jeder fündig!

      Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
    • Beschäftige dich mal mit der Bash-Shell...

      So wie ich das geschrieben habe gelten folgende Bedingungen:
      -dein kompiliertes Programm muss "u1" heißen und im selben Ordner liegen wie die *.in und *.out Dateien
      -das Shell-Skript muss auch im gleichen Ordner liegen
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von raymond ()

    • Shell-Script

      1. #!/bin/bash
      2. z=1
      3. for i in *.in ; do
      4. ./u1 < $i > out$z;
      5. z=$[$z+1]
      6. done;
      7. # Vergleiche Dateien
      8. zz=1 for l in *.out ; do
      9. echo
      10. echo Vergleiche $l mit out$zz:
      11. diff $l out$zz;
      12. if [ $? == 0 ]; then
      13. echo "Die Dateien sind gleich :)"
      14. fi;
      15. zz=$[$zz+1]
      16. done;
      Alles anzeigen

      Bekomm ich jetzt von deiner Schule eine 1? ;)

      Ich habe mir ein Buch bei ebay günstig gekauft. Da sind viele getestete Beispiele drin. Im Internet muss man sich die Infos von mehreren Seiten zusammensuchen. Das kann sehr anstrengend sein. Als ich mit Skripten angefangen habe, möchte ich nichts mehr mit C usw. zu tun haben. Auf kompilieren habe ich einfach keinen Bock mehr und für kleinere und mittelgroße Aufgaben kann man sehr gut Skripten.
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von raymond ()

    • So das ShellScript läuft jetzt und funktioniert auch soweit nur hab ich jetzt das problem das er mir immer einen Fehler ausgibt wenn ich die Selben datein mit FileMerge vergleiche sagt er mir dass es unterschiedliche LineEndings sind und somit nicht identisch. So wie kann ich dieses Problem lösen habe Xcode schon gesagt das er mit CRLF kompilieren soll aber irgendwie tut er das dann doch nicht. Kann mir wer weiter helfen?

      Manuel
    • Da waren mehrere Fehler drin (\r\n ist die richtige Escape-Sequenz für Windows (da dein Lehrer sehr wahrscheinlich die *.out unter Windows erstellt hat): de.wikipedia.org/wiki/Zeilenumbruch). Fehler waren auch noch beim Doppelpunkt.

      So nun die Lösung:

      1)

      C-Quellcode

      1. Raymonds-iMac:tax Raymond$ cat u1_tax.c
      2. #include <stdio.h>
      3. int main() {
      4. float a;
      5. printf("Enter an amount: ");
      6. scanf("%f", &a);
      7. printf("With tax added : %.2f\r\n",a/5*6);
      8. return 0;
      9. }
      10. Raymonds-iMac:tax Raymond$
      Alles anzeigen


      2)

      Quellcode

      1. Raymonds-iMac:tax Raymond$ gcc u1_tax.c -o u1
      2. Raymonds-iMac:tax Raymond$


      3)

      Quellcode

      1. Raymonds-iMac:tax Raymond$ ./test.sh
      2. Vergleiche u1_tax_test1.out mit out1:
      3. Die Dateien sind gleich :)
      4. Vergleiche u1_tax_test2.out mit out2:
      5. Die Dateien sind gleich :)
      6. Raymonds-iMac:tax Raymond$
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von raymond ()

    • So also ein letztes mal brauch ich noch eure Hilfe mein script funktioniert so weit und sieht so aus:


      #!/bin/bash
      z=1
      for i in /Users/Manuel/Documents/Xcode/u4_largest/build/Debug/*.in ; do
      /Users/Manuel/Documents/Xcode/u4_largest/build/Debug/u4_largest < $i > /Users/Manuel/Documents/Xcode/u4_largest/build/Debug/out$z;
      z=$[$z+1]
      done;

      # Vergleiche Dateien
      zz=1
      for l in /Users/Manuel/Documents/Xcode/u4_largest/build/Debug/*.out ; do
      echo
      echo Vergleiche $l mit /Users/Manuel/Documents/Xcode/u4_largest/build/Debug/out$zz:
      diff -b $l /Users/Manuel/Documents/Xcode/u4_largest/build/Debug/out$zz;
      if [ $? == 0 ]; then
      echo Die Dateien sind Identisch !
      else
      echo Die Dateien sind unterschiedlich groß !
      fi;
      zz=$[$zz+1]
      done;

      Habe jetzt bei diff noch -b hinzugefügt um den white space zu ignorieren sprich die Line endings jetzt hab ich heute mit unserem prof darüber gerdet und er meinte das es besser wäre die testdateien vorher zu konvertieren er meinte es ca so irgendwie

      tar -d '\r' <$l> KonvertierteTestfile.txt

      weis nicht ob das so richtig ist weil es so einfach nicht funktionieren will.
      ich will einfach nur die erhaltenen testfiles einlesen alle \r rauslöschen und in einer anderen datei wieder speichern damit ich das problem mit den line endings nicht mehr habe.

      Manuel
    • Was möchtest du mit tar? tar nutzt man um Dateien zu packen oder zu entpacken:
      unixhelp.ed.ac.uk/CGI/man-cgi?tar

      Hier gibts zwar die Option "-d", aber bei dem tar unter Mac OS X scheinbar nicht:

      Quellcode

      1. Raymonds-iMac:tax Raymond$ tar --help | grep -e -d
      2. Raymonds-iMac:tax Raymond$


      Ich verstehe nun leider wieder nicht dein Problem: es läuft doch. Wenn die .out Dateien am Ende halt eine Leerzeile haben, muss dein Programm am Ende auch eine Leerzeile erzeugen.
      Da es ja mit "\r\n" wunderbar funktioniert, weiß ich nun nicht, warum du jetzt irgendwas ignorieren möchtest.

      Wenn dein Lehrer selbst in der Lösung (also die *.out Dateien) keine Leerzeilen haben möchte, muss er selbst sein Programm anpassen und euch die richtigen Lösungen, bzw. was er sehen möchte, schicken.

      PS: du hast am Anfang was von "Schule" geschieben und nun auf einmal Prof? Also Fachhochschule? Da wurde einer in meiner Semestergruppe schon ganz bös' vom Prof angemacht, wo er gesagt hat: Schule.
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von raymond ()

    • Original von NewApfel
      Habe jetzt bei diff noch -b hinzugefügt um den white space zu ignorieren sprich die Line endings jetzt hab ich heute mit unserem prof darüber gerdet und er meinte das es besser wäre die testdateien vorher zu konvertieren er meinte es ca so irgendwie

      tar -d '\r' <$l> KonvertierteTestfile.txt

      weis nicht ob das so richtig ist weil es so einfach nicht funktionieren will.
      ich will einfach nur die erhaltenen testfiles einlesen alle \r rauslöschen und in einer anderen datei wieder speichern damit ich das problem mit den line endings nicht mehr habe.

      Manuel


      Acho du meinst: "tr -d \r <infile >outfile"
      (Quelle: sed.sourceforge.net/sed1line_de.html)

      Bei mit funktioniert das auch nicht. Aber meiner Meinung nach, ist das Aufgabe des Profs.
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von raymond ()