Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

21

16.09.2015, 16:50

Das ist auch logisch gesehen Unfug.
Und es muss Zeiger=&sequenz.front() heißen.
Aber wie gesagt, das ist Quatsch.

eisenmad

Treue Seele

  • »eisenmad« ist der Autor dieses Themas

Beiträge: 84

Wohnort: Heute hier, morgen dort

Beruf: Denker

  • Private Nachricht senden

22

16.09.2015, 16:54

Würdest du mir bitte einfach sagen was ich da schreiben soll?

Dann kann ich das dabei gleichzeitig erlernen und weiss es für das nächste mal. Werde sowas bestimmt wieder machen müssen.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

23

16.09.2015, 17:12

Dein Code ist allgemein ziemlich groß und unübersichtlich geworden. Ich denke du hast da vieles was du einfach nicht verstehst benutzt und da ist eher das Problem. Wenn wir dir den Code hier hin klatschen hast du etwas funktionierendes aber hast nichts dabei gelernt und beim nächsten mal kannst du es immer noch nicht besser.
Fang noch mal Schritt für Schritt an.
1. Schreib den Code der deine Möglichen Positionen in einen std::vector schiebt und diesen mischt.
2. Durchlaufe diesen std::vector und lass dir mal diese Positionen ausgeben. Das was direkt in dem std::vector steht und nichts anderes.
3. Schreibe an diese Positionen eine 1 in die Matrix.
4. fertig
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

eisenmad

Treue Seele

  • »eisenmad« ist der Autor dieses Themas

Beiträge: 84

Wohnort: Heute hier, morgen dort

Beruf: Denker

  • Private Nachricht senden

24

16.09.2015, 20:59

Folgendes generiert mir eine Matrix voll mit 1er.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
for(ik=0 ; ik<L; ik++)
{
    for(auto & il : sequenz)
    {          
    muster[ik][il]=1;            
    }

cout << "\n";
}


Das diese Matrix nur 1er Produziert verstehe ich wegen der Bereichsangabe il : sequenz
Ich weiss nicht genau wie ich das jetzt abändere, dass in jeder Zeile nur eine 1 ersetzt wird?

Tobiking

1x Rätselkönig

  • Private Nachricht senden

25

16.09.2015, 21:13

Mit dem Code läufts du für jede Zeile die Sequenz durch. Du brauchst aber nur die Sequenz zu durchlaufen. Die beiden Koordinaten für die Einsen ergeben sich aus Position in der Sequenz und dem Wert in der Sequenz an der Position.

eisenmad

Treue Seele

  • »eisenmad« ist der Autor dieses Themas

Beiträge: 84

Wohnort: Heute hier, morgen dort

Beruf: Denker

  • Private Nachricht senden

26

16.09.2015, 21:15

Mit dem Code läufts du für jede Zeile die Sequenz durch. Du brauchst aber nur die Sequenz zu durchlaufen. Die beiden Koordinaten für die Einsen ergeben sich aus Position in der Sequenz und dem Wert in der Sequenz an der Position.


Herr je aber ich weiss das doch. Ich kriege das nicht programmiert. Ich kann kein C++

Jetzt versuche ich mit iteratoren etwas zu machen. Vielleicht klappt das ja...

eisenmad

Treue Seele

  • »eisenmad« ist der Autor dieses Themas

Beiträge: 84

Wohnort: Heute hier, morgen dort

Beruf: Denker

  • Private Nachricht senden

27

16.09.2015, 22:03

Wobei ich mal für einen Code Ansatz dankbar wäre. Keine ganze Bibel aber mal irgend ein Ansatz? Ich sitze da jetzt seit zwei Tagen 24/7 dran und komme nicht vorwärts.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

28

16.09.2015, 23:04

Du hast doch alles, was du brauchst. Ansätze haben wir dir auch schon mehr als genug genannt. Jetzt liegt's an dir.

eisenmad

Treue Seele

  • »eisenmad« ist der Autor dieses Themas

Beiträge: 84

Wohnort: Heute hier, morgen dort

Beruf: Denker

  • Private Nachricht senden

29

17.09.2015, 01:08

Bitte löschen.

Hatte nur bissl Frust-gejammert... :S

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »eisenmad« (17.09.2015, 03:23)


eisenmad

Treue Seele

  • »eisenmad« ist der Autor dieses Themas

Beiträge: 84

Wohnort: Heute hier, morgen dort

Beruf: Denker

  • Private Nachricht senden

30

17.09.2015, 03:10

Ich glaube ich habe es hinbekommen: ^^

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//Programm berechnet L zufällige, binäre, paarweise orthonormale Zeilenvektoren der Länge N
#include <iostream> 
#include <stdlib.h>
#include <vector>
#include <iterator>
#include <stdlib.h>
#include <algorithm>

#define N 5      //Anzahl der Spalten
#define L 3       //Anzahl der Zeilen

using namespace std;
//=============================================
//Fisher-Yates-Shuffle-Algorithmus
void FisherYates(std::vector<int>& vec)
{
    int n = vec.size();
    for (int i = n - 1; i > 0; --i)
    {
        std::swap(vec[i], vec[rand() % (i + 1)]);
    }
}
//=============================================
int main () {                                      
int ik,il;

int Sequenz[N];
for(il=0; il<N; il++){Sequenz[il]=il;}

vector<int> sequenz;
sequenz.insert( sequenz.begin() , Sequenz , Sequenz + N ) ; 

FisherYates(sequenz);

vector< vector<int> > muster( L,vector<int>(N) );

//Setze orthonormale Zeilenvektoren
il=0;
for(ik=0; ik<L; ik++)
{

   muster[ik][sequenz[il]]=1;          
   il++;
}  

//Ausgabe der zueinander orthonormalen Zeilenvektoren
for(ik=0; ik<L; ik++)
{
    for(il=0; il<N; il++)
    {
    cout << " " << muster[ik][il];
    }
cout << "\n";
}

//cout << "\n";
//for(int il : sequenz){cout << sequenz[il] << " ";}

//=============================================
return 0;                                                                                             
}
//=============================================


Was für ein Kampf eh :dash: aber es läuft endlich :)

p.s.
Das war nun mein zweites C++ Programm. Puh, jetzt nehme ich dann das dritte in Angriff. :thinking:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »eisenmad« (17.09.2015, 03:39)


Werbeanzeige