C/C++

Язык Си. Помогите пожалуйста

Почему у меня выдает ошибку в конце программы и как я ее решить? #define _CRT_SECURE_NO_WARNINGS
#include "conio.h"
#include "stdlib.h"
#include "locale.h"
#include "math.h"
#include <stdio.h>

void input(char name_array, int* kol_elementov)
{
do
{
printf("Введите размерность массива %c: ", name_array);
scanf("%d", kol_elementov);
} while ((*kol_elementov < 3) || (*kol_elementov > 100));
}
void proschet_array(float* ary, int N, float a, float b, float c)
{
for (int i = 0; i < N; i++)
ary[i] = a * (i + 1) + b * (i + 1) + c;
}
void output_array(char name, float* ary, int N)
{
printf("Массив %c: ", name);
for (int i = 0; i < N; i++)
printf("%6.2f ", ary[i]);
printf("\n");
}
void find_minimum(float* arr, int N, float* pmin) {
float min = 999999999;
for (int i = 0; i < N; i++)
if (min > fabs(arr[i]))
min = fabs(arr[i]);
*pmin = min;
}

int main()
{
setlocale(0, "RUS");
float G[100] = { 0 }, Z[100] = { 0 }, X[100] = { 0 }, P[100] = { 0 };
float R[4] = { 0 };
int сol_g = 0, сol_z = 0, сol_x = 0, сol_p = 0;
input('G', &сol_g);
input('Z', &сol_z);
input('X', &сol_x);
input('P', &сol_p);
proschet_array(&G[0], сol_g, 15.3, -16.9, 4.7);
proschet_array(&Z[0], сol_z, 8.8, -12.4, -5.9);
proschet_array(&X[0], сol_x, 6.7, 2.5, -18.6);
proschet_array(&P[0], сol_p, -11.6, 29.4, -8.2);
output_array('G', &G[0], сol_g);
output_array('Z', &Z[0], сol_z);
output_array('X', &X[0], сol_x);
output_array('P', &P[0], сol_p);
R[0] = find_minimum(&G[0], сol_g);
R[1] = find_minimum(&Z[0], сol_z);
R[2] = find_minimum(&X[0], сol_x);
R[3] = find_minimum(&P[0], сol_p);
output_array('R', &R[0], 4);
system("pause");
return 0;
}
Hamo Kostanyan
Hamo Kostanyan
83
 #include  
#include
#include

#define MIN (size_t)3
#define MAX (size_t)100
#define RESULT (size_t)4

size_t input(char* name, size_t min, size_t max) {
size_t value = 0;
do {
printf("Введите размерность массива %s: ", name);
scanf_s("%zu", &value);
} while (value < min || value > max);
return value;
}

void proschet_array(float* arr, size_t n, float a, float b, float c) {
size_t i = 0;
while (++i
ДТ
Дмитрий Телегин
81 297
Лучший ответ
В вашей программе есть несколько проблем:

1. В функции `void input(char name_array, int* kol_elementov)` вы передаете аргумент `name_array` как символ, но вместо этого он должен быть массивом символов или строкой. Исправьте его объявление на `char name_array[]`, чтобы передавать строку, представляющую имя массива.

2. В функции `void find_minimum(float* arr, int N, float* pmin)` вы используете функцию `fabs()`, которая требует подключения заголовочного файла `<math.h>`. Добавьте следующую строку перед функцией `main()`, чтобы включить соответствующее объявление: `#include <math.h>`

3. В функции `void find_minimum(float* arr, int N, float* pmin)` у вас отсутствует объявление переменной `i` в цикле. Измените объявление цикла на `for (int i = 0; i < N; i++)`.

4. В функции `void find_minimum(float* arr, int N, float* pmin)` у вас отсутствует возвращаемое значение, но в `main()` вы пытаетесь присвоить его элементам массива `R`. Измените объявление функции на `float find_minimum(float* arr, int N)` и добавьте оператор `return min;` в конце функции. Измените вызовы `find_minimum()` в `main()` соответственно.

5. В функции `output_array()` вы используете формат `%c` для печати символа, но передаете ей аргумент типа `char*`. Исправьте формат печати на `%s`, чтобы корректно выводить имя массива.

После внесения этих изменений ваш код должен выглядеть следующим образом:

```c
#define _CRT_SECURE_NO_WARNINGS
#include "conio.h"
#include "stdlib.h"
#include "locale.h"
#include <stdio.h>
#include <math.h>

void input(char name_array[], int* kol_elementov)
{
do
{
printf("Введите размерность массива %s: ", name_array);
scanf("%d", kol_elementov);
} while ((*kol_elementov < 3) || (*kol_elementov > 100));
}

void proschet_array(float* ary, int N, float a, float b, float c)
{
for (int i = 0; i < N; i++)
ary[i] = a * (i + 1) + b * (i + 1) + c;
}

void output_array(char name[], float* ary, int N)
{
printf("Массив %s: ", name);
for (int i = 0; i < N; i++)
printf("%6.2f ", ary[i]);
printf("\n");
}

float find_minimum(float* arr, int N)
{
float min = 999999999;
for (int i = 0; i < N; i++)
if (min > fabs(arr[i]))
min = fabs(arr[i]);
return min;
}

int main()
{
setlocale(0, "RUS

");
float G[100] = { 0 }, Z[100] = { 0 }, X[100] = { 0 }, P[100] = { 0 };
float R[4] = { 0 };
int сol_g = 0, сol_z = 0, сol_x = 0, сol_p = 0;
input("G", &сol_g);
input("Z", &сol_z);
input("X", &сol_x);
input("P", &сol_p);
proschet_array(&G[0], сol_g, 15.3, -16.9, 4.7);
proschet_array(&Z[0], сol_z, 8.8, -12.4, -5.9);
proschet_array(&X[0], сol_x, 6.7, 2.5, -18.6);
proschet_array(&P[0], сol_p, -11.6, 29.4, -8.2);
output_array("G", &G[0], сol_g);
output_array("Z", &Z[0], сol_z);
output_array("X", &X[0], сol_x);
output_array("P", &P[0], сol_p);
R[0] = find_minimum(&G[0], сol_g);
R[1] = find_minimum(&Z[0], сol_z);
R[2] = find_minimum(&X[0], сol_x);
R[3] = find_minimum(&P[0], сol_p);
output_array("R", &R[0], 4);
system("pause");
return 0;
}
```

Следуя этим рекомендациям, программа должна работать правильно и не должна выдавать ошибок в конце.
Ilyos Чувак, бросай ты чатГПТ. С умным видом рассказывать про рептилоидов на Рен-тв можно и без него. Ну или хоть в общих чертах изучи предмет вопроса.

1) Аргумент передается как символ и печатается как символ.
2) "math.h" допускается на равне с <math.h>
3) Где там бот не увидел int i = 0 ?
4) Единственное угаданное место )
5) Он передает char (а не char*). У бота галлюцинации.

Итого - 1 правильный пункт из 5.
void input(char name_array[], int* kol_elementov);
void proschet_array(float* ary, int N, float a, float b, float c);
void output_array(char name, float* ary, int N);
void find_minimum(float* arr, int N, float* pmi
n);
после внесения этих исправлений код должен работать
Error
________ Muzulman
________ Muzulman
2