Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * \file dame.c
- */
- #include <stdio.h>
- /**\brief: dameproblem
- * loest das dameproblem mit n feldern
- * \return 0
- */
- /** /brief: Kontrolle
- * ueberprueft ob das setzen einer Dame auf dem feld
- * moeglich ist.
- * /return: test
- */
- int kontrolle (int *feld, int zeile){
- int i = zeile-1;
- int test =1; /*setzten moeglich, bis gegenteiligs gezeigt wird*/
- int j = 1;
- if(zeile == 0) return test;
- /* in der ersten zeile ist setzten immer moeglich*/
- /*kontrolliert die reihen nach oben druch */
- while(i>= 0){
- if(feld[i] == feld[zeile]
- || feld[zeile]-j == feld[i]
- || feld[zeile]+j == feld[i]) test = 0;
- j++;
- i--;
- }
- return test;
- }
- int main (int argv, char** argc){
- int n;
- n = atoi(argc[1]); /* einelsen aus kommandozeile*/
- /*weitere eingaben, wenn eingabe falsch*/
- while(n <4 || n>60){
- scanf("%i",&n);
- }
- /*erzeigt 2d-feld */
- /* in jeder Zeile wird gespeichert, in welcher spalte die dame
- dort steht */
- int feld[n];
- int j = 0;
- int i = 0;
- /* anfangs stehen alle damen auf 0, also daneben*/
- for(i; i<n; i++) feld[i] = 0;
- i = 0;
- while(i < n){
- feld[i]= feld[i]+1; /* setzt die dame ein feld nach rechts*/
- /* wenn das feld vorbei ist, wird die dame zurueck gesetzt
- und man geht wieder eine zeile hoeher und schiebt
- dann dort weiter */
- if(feld[i] >n){
- feld[i] = 0;
- i--;
- }else{
- /* wenn die dame auf dem feld stehen darf, geht es eine zeile
- weiter nach unten */
- if(kontrolle(feld, i) == 1){
- i++;
- }
- }
- }
- /* Ausgabe */
- /* geht jede Zeile durch und gibt dort n-mal aus.
- wenn dort eine Dame sthet ein "*", wenn sie da steht ein "D" */
- for(i=0; i<n; i++){
- for(j=1; j<=n; j++){
- if(feld[i] == j){
- printf(" D");
- }
- else{
- printf(" *");
- }
- }
- printf(" \n"); /* zeileunumbruch nach jeder zeile*/
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement