Addition bei C/ C++ programmieren?

 - (Computer, Mathematik, programmieren)

5 Antworten

An scheinend sollst du jede Addition in einen pthread auslagern, also quasie 100 pthreads initialisieren und jeden 2 zahlen addieren lassen.

Das ist schon eine nicht sehr triviale Aufgabe, vor allem für einen Anfänger.

pthread_t threads[100];
int i;
int n;
for(n = 0; n<100; n++){
  pthread_create(&threads[n], NULL, addieren, (void*)n;
}for(i = 0; i < 100; i ++){ 
  pthread_join(threads[i], NULL);
}

So könnte man zum Beispiel 100 pthreads initialisieren und ihnen die Funktion addieren sowie den Parameter n übergeben.

Hoffe diese kleine Codebeispiel hilft dir schon weiter, an sonsten vielleicht mal in die man-page von pthread_create schauen, da steht noch besser worauf man achten muss und wie das genau funktioniert.

Die Aufgabe ist unklar formuliert, weil es sich um drei Arrays handelt.

Ungeachtet dessen könnte jedes Array unabhängig von den anderen aufgebaut werden, also z.B. in drei Threads.

for( ... )
{
 A[i] = i;
}

for( ... )
{
 B[i] = size - i;
}

for( ... )
{
 // C[i] = i + size - i
 C[i] = size;
}

sebastianla  29.05.2019, 10:53

Ist für mich nicht unklar formuliert. A[] und B[] werden komponentenweise addiert. Und das sind zwei. In C[] wird komponentenweise das Ergebnis gespeichert.

0
Rammstein53  29.05.2019, 10:59
@sebastianla

Ich erkenne drei Arrays A,B,C. Ausserdem sind alle Elemente von C[] identisch. Die Aufgabe ist kompletter Schwachsinn.

0

ein Pthread oder so was macht C[i] = C[i] + B[i] und der andere C[i] = C[i] + B[i]

die Aufgabe ist seltsam

Ein Thread könnte die Addition der Elemente 0..size/2-1 und ein anderer die Addition der Elemente size/2..size-1 übernehmen.


Rudinatooor 
Fragesteller
 29.05.2019, 10:55

ich weiß leider noch nicht wie ich das Programm zum laufen bringen soll

0