У меня есть массив и я его изменил алгоритмом Фишера-Йетса. Проблема заключается в том, что у меня числа в измененном массиве начинаются с нуля, а не с 1. Как можно это исправить ?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 200
int arr[N], swap, j;
int FisherYets(int arr[], int size);
void sorting1(int arr[], int size);
int sorting2(int number);
int main() {
srand(time(NULL));
for (int i = 0; i < N; i++) {
arr[i] = i + 1;
printf("%d ", arr[i]);
}
printf("\n\n\n");
FisherYets(arr, N);
for (int i = 0; i < N; i++) {
printf("%d ", arr[i]);
}
printf("\n\n\n");
sorting1(arr, N);
printf("\n\n\n");
return 0;
}
int FisherYets(int arr[], int size) {
srand(time(NULL));
for (int i = size; i > 1; i--) {
j = 1+rand() % i ;
swap = arr[i];
arr[i] = arr[j];
arr[j] = swap;
}
return arr;
}
void sorting1(int* arr, int size) {
int sum = 0;
for (int i = 0; i < N - 1; i++)
{
int position = i;
for (j = i + 1; j < N; j++)
{
if (sorting2(arr[position]) > sorting2(arr[j]))
position = j;
else if (sorting2(arr[position]) == sorting2(arr[j])) {
if (arr[position] > arr[j])
position = j;
}
}
if (position != i)
{
swap = arr[i];
arr[i] = arr[position];
arr[position] = swap;
}
}
printf("Sorted Array:\n");
for (int i = 0; i < N; i++)
printf("%d ", arr[i]);
}
int sorting2(int number) {
int sum = 0;
while (number) {
sum += number % 10;
number = number / 10;
}
return sum;
}
Куча ошибок в генерировании массива. В основном с индексацией неправильной. Результат сортировки тоже неверный. Я не смотрел почему.
int FisherYets(int arr[], int size) {
// уже было в main
//srand(time(NULL));
for (int i = size; i > 1; ) {
// индексы в массиве 0..N-1
j = rand() % i ;
// индексы в массиве 0..N-1
-- i ;
swap = arr[i];
arr[i] = arr[j];
arr[j] = swap;
}
// warning: return makes integer from pointer without a cast
//return arr;
return 0 ;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Всем здравствуйтеТакая проблема: печатается только первый элемент с отступом, а все остальные без отступа
У меня есть приложение на Java, являющееся дискорд-ботомУ меня есть игровой сервер Arma 3
Как поменять местами максимальный и минимальный элемент?
Хочу встроить Lua в свою программу, написанную на Qt/C++Нашел пока статьи и обсуждения о простом встраивании Lua в Си программу (пример)