Задача о 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
- Вычисляется сумма чисел по каждой горизонтали и выводится на экран
- Выводится горизонтальная линия из символов
-
- Вычисляется сумма чисел по каждой вертикали и выводится на экран
- Выводится вертикальная линия из символов
+
- Программа заканчивает свою работу
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д