Hilfe für c-Programm(bin zu blond)



  • Hallo,

    habe hier ein riesiges problem an dem ich schon wieder verzweifele

    Habe folgende Aufgabe:

    Aufgabe 4.3 (*) (arrays, call by reference)
    Schreiben Sie ein Programm, das in einen Vektor V1 der Länge 10 Integer-Werte von der Konsole einliest. Im Unterschied zu Aufgabe 3.8 soll der Vektor V1 selber verändert werden. Zu diesem Zweck können Sie die Funktion void swap(int *x, int *y) aus dem Aufgabe 4.1 verwenden.
    Die Feldlänge soll mit dem Präprozessorbefehl #define vereinbart werden

    So sieht meine Aufgabe 3.8 aus:

    **// Üb. 4 Aufg 3.8

    #include <stdio.h>
    #define max 10

    int main ()

    {
    int i;
    int V1[max];
    int V2[max];

    fflush(stdin);

    printf ("Biite 10 mal eine zahl eingeben und mit Enter bestätigen\n\n");

    for (i=0;i<max;i++)
    {
    scanf ("%i",&V1[i]);
    }

    printf ("Vektor V1 lautet:\n ");

    for (i=0;i<max;i++)
    {
    printf ("%i ",V1[i]);
    }
    printf ("\n\n");

    printf ("Vektor V2 lautet:\n ");

    for (i=max-1;i>=0;i--)
    {
    V2[i]=V1[i];
    printf ("%i ",V2[i]);
    }
    printf ("\n\n");

    return 0;
    }**

    Könnt ihr mir helfen?

    Liebe Grüße:
    Dani



  • Heute morgen hat mir ein Kommilitone geschrieben, dass ich lediglich dass hier mit einbauen muss:
    **
    #include <stdio.h>
    #include <string.h>
    void ersetze_zeichen(char *s, char alt, char neu){
    while (*s!='\0')
    {
    if (s ==alt)
    s=neu;
    s++;
    }
    }
    int main() {
    char text[80];
    char a='e';
    char n='y';
    printf("\nBitte geben Sie einen Satz ein: ");
    fgets(text, 80, stdin);
    ersetze_zeichen(text,a,n);
    printf("%s\n",text);
    return 0;
    }

    aber ich verstehs nicht 😞



  • Bist du dir sicher, dass ihr über die selbe Aufgabe redet?
    Die haben nichts miteinander zu tun (Ok, beide sind in C geschrieben).

    Wo ist jetzt genau dein Problem?

    Für den Code nimm das nächste mal den C/C++ Button unter den 🙂 😃 und nicht den B



  • Wird wahrscheinlich ne andere Aufgabe sein, hoffe ich jedenfalls. Ansonsten halt ich mich bald selber für zu doof dafür:-)

    Aus der Aufgabe 3.8, die ich eingefügt habe, soll die Aufgabe 4.3 gemacht werden(Aufgabenstellung siehe oben)
    Ich habe aber keine Ahnung wie ich überhaupt anfangen soll. Dürfte ja eigentlich nicht schwer sein. Anstatt Vektor 2 draus zu machen, soll der Vektor V1 selbst verändert werden. Mehr ist es ja nicht oder???

    Gruß
    Dani


  • Mod

    Daniela1987 schrieb:

    Ansonsten halt ich mich bald selber für zu doof dafür:-)

    (bin zu blond)

    Tipp: Auf die "dummes, blondes Mädchen"-Masche fällt hier kaum jemand herein. Du schreckst die Helfer eher ab. Warum sollte man jemandem helfen, der sowieso zu doof ist, die Antwort zu kapieren? Dann kommt der Frager bloß mit weiteren doofen Fragen an.

    Vielleicht hast du heute Nachmittag Glück, wenn die jungen Herren aus der Schule zurück kommen.



  • Da wäre es ganz hilfreich, wenn du noch schreiben würdest, wie Aufgabe 3.8 lautet.

    Sollt ihr die Elemente von Vektor1 in umgekehrter Reihenfolge nach Vektor2 kopieren?
    Das macht dein Programm aber nicht. Das kopiert 1:1.



  • Hier die Aufgabe 3.8:

    Schreiben Sie ein Programm, das in einen Vektor V1 der Länge 10 Integer-Werte von der Konsole einliest und dann diese Werte in einen zweiten Vektor V2 der Länge 10 kopiert, wobei jedoch die Reihenfolge umgedreht wird.
    Beispiel: V1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    V2 soll dann folgendermaßen aussehen: V2 = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}.



  • Funktioniert auch, habs gerade getestet



  • Die Ausgabe erfolgt nur umgkehrt.

    for (i=max-1;i>=0;i--)   // die Schleife läuft rückwärts
    {
      V2[i]=V1[i];           // Hier wird 1:1 kopiert
      printf ("%i ",V2[i]);  // Hier wird ausgegeben
    }
    

    Du kannst ja mal folgende Zeilen vor dem return einfügen, oder die printf-Zeile oben einfügen.

    for (i=0;i<max;i++)
    {
      printf ("V1[%d] = %i  V1[%d] = %i\n", V1[i], V2[i]);
    }
    

    V2[9] soll den Inhahlt von V1[0] bekommen.



  • SeppJ schrieb:

    Daniela1987 schrieb:

    Ansonsten halt ich mich bald selber für zu doof dafür:-)

    (bin zu blond)

    Tipp: Auf die "dummes, blondes Mädchen"-Masche fällt hier kaum jemand herein. Du schreckst die Helfer eher ab. Warum sollte man jemandem helfen, der sowieso zu doof ist, die Antwort zu kapieren? Dann kommt der Frager bloß mit weiteren doofen Fragen an.

    Vielleicht hast du heute Nachmittag Glück, wenn die jungen Herren aus der Schule zurück kommen.

    Nettes Kommentar...

    bin einfach gerade am verzweifeln.Ich muss diese Aufgabe und noch eine weitere eigentlich schon abegeben haben und daran hängt die Zulassung zur Prüfung. Ich studiere nix mit Informatik. Leider habe ich aber ein Semester lang eine Art Grundkurs. Ich bin froh wenn das vorbei ist, denn Programmieren ist absolut nicht mein Ding. Ist halt so.



  • Das soll

    for (i=0;i<max;i++)
    {
      printf ("V1[%d] = %i  V2[%d] = %i\n", i, V1[i], i, V2[i]);
    }
    

    heißen



  • DirkB schrieb:

    Die Ausgabe erfolgt nur umgkehrt.

    for (i=max-1;i>=0;i--)   // die Schleife läuft rückwärts
    {
      V2[i]=V1[i];           // Hier wird 1:1 kopiert
      printf ("%i ",V2[i]);  // Hier wird ausgegeben
    }
    

    Du kannst ja mal folgende Zeilen vor dem return einfügen, oder die printf-Zeile oben einfügen.

    for (i=0;i<max;i++)
    {
      printf ("V1[%d] = %i  V1[%d] = %i\n", V1[i], V2[i]);
    }
    

    V2[9] soll den Inhahlt von V1[0] bekommen.

    Danke,

    Hmm, die Zahlen werden trotzdem vertauscht. Muss mich mal nen Moment damit beschäftigen. Dauert nen Augenblick. Mir fällt es immer noch schwer herauszulesen, was in dem Quellcode gerade passiert.



  • Hab das jetzt so geschrieben, was ist daran falsch?

    #include <stdio.h>
    #define max 10
    
    int main ()
    
    {
    int i;
    int V1[max];
    int V2[max];
    
    fflush(stdin);
    
    printf ("Biite 10 mal eine zahl eingeben und mit Enter bestätigen\n\n");
    
    for (i=0;i<max;i++)
    {
    scanf ("%i",&V1[i]);
    }
    
    printf ("Vektor V1 lautet:\n ");
    
    for (i=0;i<max;i++)
    {
    printf ("%i ",V1[i]);
    }
    printf ("\n\n");
    
    printf ("Vektor V2 lautet:\n ");
    
    printf ("\n\n");
    
    for (i=0;i<max;i++)
    {
      printf ("V1[%d] = %i  V2[%d] = %i\n", i, V1[i], i, V2[i]);
    } 
    
    return 0;
    }
    


  • SeppJ schrieb:

    die jungen Herren aus der Schule zurück kommen.

    Damit bin dann wohl ich gemeint.

    @Blondi
    So weit schon mal ganz gut (außer dass fflush(stdin) böse ist, und dass der Code nicht eingerückt ist), aber an welcher Stelle beschreibst du denn den zweiten Vektor? 😉



  • Je mehr ich weiß, desto klarer erkenne ich, wie wenig ich weiß. Das läßt sich nicht auf die schnelle wegzaubern.
    Lösung: Aufgabenlösung von einem Nachbarn abschreiben, oder eine fertige Lösung als Auftragsarbeit erstellen lassen, entweder von Mitschülern (sind ja eh oft knapp bei Kasse) oder:
    http://www.c-plusplus.net/forum/f11

    Hm...und könnte man als blondes Dümmchen den Lösungsteil nicht auch erschlafen? Jüngere männliche Schüler könnten sich eventuell an die Kirche wenden.



  • eigentlich brauche ich doch auch keinen 2. Vektor. Das war ja Aufgabe 3.8-
    mit was für einer Funktion kann ich denn einen Vektor den ich einlese (das hab ich ja bereits in meinem Quellcode) einfach verändern. Wie genau steht ja nicht in der Aufgabe.



  • Ich nehm mal an, das dein Lehrer möchte, das du verstehen sollst, was call by reference bedeutet.

    Schau dazu auch mal hier: http://abraham.fh-lausitz.de/profs/robel/faq/callByReference.html

    Darf ich fragen, was du genau studierst?



  • Daniela1987 schrieb:

    bin einfach gerade am verzweifeln.Ich muss diese Aufgabe und noch eine weitere eigentlich schon abegeben haben und daran hängt die Zulassung zur Prüfung. Ich studiere nix mit Informatik. Leider habe ich aber ein Semester lang eine Art Grundkurs. Ich bin froh wenn das vorbei ist, denn Programmieren ist absolut nicht mein Ding. Ist halt so.

    Dann reiss die Sache mit fremder Hilfe irgendwie ab und vergiss alles!

    Warum muss man überhaupt Leute gerade in C fordern, wenn diese wie erklärt mit Programmierung nichts am Hut haben wollen? Für einen Grundkurs für das Verständnis von Programmiertätigkeiten scheint mir C eher ungeeignet. Früher hatte man dafür BASIC oder PASCAL genommen.

    Und gegen blond hat hier niemand etwas!



  • berniebutt schrieb:

    ...

    Warum muss man überhaupt Leute gerade in C fordern, wenn diese wie erklärt mit Programmierung nichts am Hut haben wollen?...

    vlt. möchte Daniela ja mal irgendwann Leiterin einer SW Abteilung werden, dann weiss sie jetzt, mit was für "komplizierten Dingen" sich unsereins rumschlägt, und weiss das dann mehr zu würdigen, unsere Chefs tun das ja leider nicht. 😃 😃 😃



  • Problem gelöst, danke...

    Studiere Biotechnologie
    programmieren gehört zum Studium Generale



  • Das ist wahrscheinlich auch ganz sinnvoll so. Es sollte mich wundern, wenn man in der Biotechnologie weit käme, ohne Computern beibringen zu können, sich durch riesige Mengen Daten zu fressen.


Anmelden zum Antworten