Задача о 8 ферзях - C (СИ)
Формулировка задачи:
Всем привет,решил сделать программу для поиска решений,но пока,увы,застопорился.
вот код:
точнее пока это кусок,который к "ферзям" имеет косвенное отношение,но пока не разберусь с тем,что опишу далее,дальше продвигаться не буду.
Итак, рассмотрим:
при входе в цикл строка имеет значение 1(count=0 +1) и sum прописывается,как 0. то есть,иными словами,строка имеет значение 1(что нам и нужно),а сумма в ней 0. в строке 2 прописывается сумма 1ой строки и т.д. Иными словами результаты записываются не в ту строку,причем последний вообще не считается.
как можно решить данную проблему? как заставить программу писать верный результат в нужную строку? я вижу косяк,но не пойму,как это решить.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,sum=0,count=0;
int arr[8][8];
for(i=0;i<8;i++)
{
printf("\n");
for(j=0;j<8;j++)
{
arr[i][j] = rand()%2;
printf("%d ",arr[i][j]);
}
}
printf("\n");
for(i=0;i<8;i++)
{
printf("\nTotal of string %d: %d ",count+1,sum);
sum = 0;
count++;
for(j=0;j<8;j++)
sum= sum + arr[i][j];
}
return 0;
}for(i=0;i<8;i++)
{
printf("\nTotal of string %d: %d ",count+1,sum);
sum = 0;
count++;
for(j=0;j<8;j++)
sum= sum + arr[i][j];
}Решение задачи: «Задача о 8 ферзях»
textual
Листинг программы
#include <stdio.h>
#include <time.h>
#include <math.h>
int main()
{
#define ROWS 8
#define COLS 12
srand( time( 0 ) );
int matrix[ ROWS ][ COLS ];
int _r;
int _c;
for( _r = 0; _r < ROWS; _r++ )
for( _c = 0; _c < COLS; _c++ )
matrix[_r][_c] = rand() % 2;
// ------- сумма по горизонтали ------
for( _r = 0; _r < ROWS; _r++ )
{
int summ = 0;
for( _c = 0; _c < COLS; _c++ )
{
summ += matrix[_r][_c];
printf( "%2d ", matrix[_r][_c] );
}
printf( "| %d\n", summ );
}
for( _c = 0; _c < COLS; _c++ )
printf( "---" );
printf( "+\n" );
// ------- сумма по вертикали ------
for( _c = 0; _c < COLS; _c++ )
{
int summ = 0;
for( _r = 0; _r < ROWS; _r++ )
{
summ += matrix[_r][_c];
}
printf( " %d ", summ );
}
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Инициализируется генератор случайных чисел
- Создается двумерный массив для хранения чисел
- Заполняется двумерный массив случайными числами от 0 до 1
- Вычисляется сумма чисел по каждой горизонтали и выводится на экран
- Выводится горизонтальная линия из символов
- - Вычисляется сумма чисел по каждой вертикали и выводится на экран
- Выводится вертикальная линия из символов
+ - Программа заканчивает свою работу