Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
würde es denn mit der Variante davor also ohne den zwei geschachtelten for schleifen auch funktionieren.
Hier wechselt der 1. Stein (von [3|5] auf [3|2]. Ok, ich sehe gerade, dass [3|2] gar nicht im Test-Set ist.1. 3/5 2. 4/2 2. 3/3 3. 4/1 4. 4/1 5. 2/5 6. 1/3 7. 1/4
Kommt bei mir wieder dieselbe Reihenfolge raus.
Eigentlich sollte rauskommen:
1. 3/2 2. 5/2 3. 2/4 4.4/1 5. 1/3 6.3/3
Äh...Also eigentlich ist es doch fasst wie beim Insertion -Sort oder ?
Da wird ja auch immer von der ausgehenden Zahl alle Zahlen verglichen und diese dann getauscht. Hier wird nur nicht das steigender Zahl geguckt sondern ob beide dann gleich sind oder ?
SteineKopie = copy(Steine)
for s in SteineKopie:
Steine = copy(SteineKopie)
Tausche s mit Stein 0 in Steine (sodass s nach dem Tausch an Stelle 0 steht)
for i in #Steine:
if berechne(i, i + 1) == 0:
best_run_value = max(i, best_run_value)
best_run_index = (s == best_run_value) ? s : best_run_index
// Da wir nicht zwischenspeichern:
Steine = copy(SteineKopie)
tausche(0, best_run_index)
berechne(0, 1)
// Ausgabe
Show, don't tell.Ich habe mir jetzt mehr darüber Gedanken gemacht .
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <stdbool.h>
int Steine[7][2];
int berechnen(int, int);
int einlesen();
int i, j, temp, temp1;
bool passt(int, int);
int drehe(int);
int tausche(int, int);
int main(){
printf("Bitte geben Sie nun 7 Dominosteine ein\n");
einlesen();
/*for(i = 0; i < 7; i++)printf("%d. %d/%d\n", (i+1) ,Steine[i][0], Steine[i][1]);*/
for(i = 0; i < 7; i++)
{
if(berechnen(i, i+1) == 0)
{
}
}
for(i = 0; i < 7; i++)
{
printf("%d. %d/%d\n", (i+1), Steine[i][0], Steine[i][1]);
}
return 0;
}
int einlesen(){
for(i = 0; i < 7; i++){
printf("%d.\n", (i+1));
for(j = 0; j < 2; j++)
scanf("%d", &Steine[i][j]);
}
return 0;
}
int drehe(int j)
{
temp = Steine[j][0];
temp1 = Steine[j][1];
Steine[j][0] = Steine[j][1];
Steine[j][1] = Steine[j][0];
Steine[j][1] = temp;
Steine[j][0] = temp1;
}
bool passt(int i,int j)
{
if(Steine[i][0] == Steine[j][0] && Steine[i][1] == Steine[j][1])
return true;
else
return false;
}
int berechnen(int i, int j) {
if(i > 7 || j > 7) return 1;
if(passt(i, j)) return 1;
else
{
drehe(j);
if(passt(i,j))
{
/*Drehen*/
drehe(j);
return 1;
}
}
else
{
if(berechnen(i,j+1) == 1)
{
tausche(i+1,j+1);
}
}
return 0;
}
int tausche(int i, int j){
temp = Steine[i][0];
temp1 = Steine[i][1];
Steine[i][0] = Steine[j][0];
Steine[i][1] = Steine[j][1];
Steine[j][0] = temp;
Steine[j][1] = temp1;
}
OkDa mir die doppelt geschachtelte Schleife mit der Schleifenbedingung mit dem Steine Array schwer fällt, habe ich jetzt noch mal das von davor nochmal geschrieben.
ANSI-C, was?#include <stdbool.h>
Insertion Sort hast du ins Gespräch gebracht. Warum willst du Insertion Sort haben?Das mittels Insertion Sort zu lösen, fällt mir in der Umsetzung schwierig.
if(Steine[i][0] == Steine[j][0] && Steine[i][1] == Steine[j][1])
int drehe(int j)
{
temp = Steine[j][0];
temp1 = Steine[j][1];
Steine[j][0] = Steine[j][1];
Steine[j][1] = Steine[j][0];
Steine[j][1] = temp;
Steine[j][0] = temp1;
}
int drehe(int j)
{
temp = Steine[j][0];
temp1 = Steine[j][1];
Steine[j][1] = temp;
Steine[j][0] = temp1;
}
Und? Was sollen wir jetzt damit? Stimmt die Ausgabe (da der Code an verschiedenen Stellen falsch ist: Nein), was ist falsch/muss anders sein?Die Ausgabe ist damit wie folgt:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int Steine[7][2];
int berechnen(int, int);
int einlesen();
int i, j, temp, temp1;
int passt(int, int);
void drehe(int);
void tausche(int, int);
int main(){
printf("Bitte geben Sie nun 7 Dominosteine ein\n");
einlesen();
/*for(i = 0; i < 7; i++)printf("%d. %d/%d\n", (i+1) ,Steine[i][0], Steine[i][1]);*/
for(i = 0; i < 7; i++)
{
if(berechnen(i, i+1) == 0)
{
}
}
for(i = 0; i < 7; i++)
{
printf("%d. %d/%d\n", (i+1), Steine[i][0], Steine[i][1]);
}
return 0;
}
int einlesen(){
for(i = 0; i < 7; i++){
printf("%d.\n", (i+1));
for(j = 0; j < 2; j++)
scanf("%d", &Steine[i][j]);
}
return 0;
}
void drehe(int j)
{
temp = Steine[j][0];
Steine[j][0] = Steine[j][1];
Steine[j][1] = temp;
}
int passt(int i,int j)
{
if(Steine[i][0] == Steine[j][0] || Steine[i][0] == Steine[j][1])
return 1;
else
return 0;
}
int berechnen(int i, int j) {
if(i > 7 || j > 7) return 1;
if(passt(i, j)) return 1;
else
{
drehe(j);
if(passt(i,j) == 1)
{
/*Drehen*/
drehe(j);
return 1;
}
}
else
{
if(berechnen(i,j+1) == 1)
{
tausche(i+1,j+1);
}
}
return 0;
}
void tausche(int i, int j){
temp = Steine[i][0];
temp1 = Steine[i][1];
Steine[i][0] = Steine[j][0];
Steine[i][1] = Steine[j][1];
Steine[j][0] = temp;
Steine[j][1] = temp1;
}
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int Steine[7][2];
int berechnen(int, int);
int einlesen();
int i, j, temp, temp1;
int passt(int, int);
void drehe(int);
void tausche(int, int);
int main(){
printf("Bitte geben Sie nun 7 Dominosteine ein\n");
einlesen();
/*for(i = 0; i < 7; i++)printf("%d. %d/%d\n", (i+1) ,Steine[i][0], Steine[i][1]);*/
for(i = 0; i < 7; i++)
{
if(berechnen(i, i+1) == 0)
{
}
}
for(i = 0; i < 7; i++)
{
printf("%d. %d/%d\n", (i+1), Steine[i][0], Steine[i][1]);
}
return 0;
}
int einlesen(){
for(i = 0; i < 7; i++){
printf("%d.\n", (i+1));
for(j = 0; j < 2; j++)
scanf("%d", &Steine[i][j]);
}
return 0;
}
void drehe(int j)
{
temp = Steine[j][0];
Steine[j][0] = Steine[j][1];
Steine[j][1] = temp;
}
int passt(int i,int j)
{
if(Steine[i][1] == Steine[j][0])
return 1;
else
return 0;
}
int berechnen(int i, int j) {
if(i > 7 || j > 7) return 1;
if(passt(i, j) == 1) return 1;
else
{
drehe(j);
if(passt(i,j) == 1)
{
/*Drehen*/
drehe(j);
return 1;
}
else
{
if(berechnen(i, j+1) == 1)
{
tausche(i+1, j+1);
}
}
}
return 0;
}
void tausche(int i, int j){
temp = Steine[i][0];
temp1 = Steine[i][1];
Steine[i][0] = Steine[j][0];
Steine[i][1] = Steine[j][1];
Steine[j][0] = temp;
Steine[j][1] = temp1;
}
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int Steine[7][2];
int berechnen(int, int);
int einlesen();
int i, j, temp, temp1;
int passt(int, int);
void drehe(int);
void tausche(int, int);
int main(){
printf("Bitte geben Sie nun 7 Dominosteine ein\n");
einlesen();
/*for(i = 0; i < 7; i++)printf("%d. %d/%d\n", (i+1) ,Steine[i][0], Steine[i][1]);*/
for(i = 0; i < 7; i++)
{
if(berechnen(i, i+1) == 0)
{
}
}
for(i = 0; i < 7; i++)
{
printf("%d. %d/%d\n", (i+1), Steine[i][0], Steine[i][1]);
}
return 0;
}
int einlesen(){
for(i = 0; i < 7; i++){
printf("%d.\n", (i+1));
for(j = 0; j < 2; j++)
scanf("%d", &Steine[i][j]);
}
return 0;
}
void drehe(int j)
{
temp = Steine[j][0];
Steine[j][0] = Steine[j][1];
Steine[j][1] = temp;
}
int passt(int i,int j)
{
if(Steine[i][1] == Steine[j][0])
return 1;
else
return 0;
}
int berechnen(int i, int j) {
if(i > 7 || j > 7) return 0;
if(passt(i, j) == 1) return 1;
else
{
drehe(j);
if(passt(i,j) == 1)
{
/*Drehen*/
return 1;
}
else
{
if(berechnen(i, j+1) == 1)
{
tausche(i+1, j+1);
}
}
}
return 0;
}
void tausche(int i, int j){
temp = Steine[i][0];
temp1 = Steine[i][1];
Steine[i][0] = Steine[j][0];
Steine[i][1] = Steine[j][1];
Steine[j][0] = temp;
Steine[j][1] = temp1;
}