
Помогите пожалуйста найти ошибку #define _CRT_SECURE_NO_WARNINGS #include #include #include
#include int main() { int s;//Число банкнот int y; for(y=0;y<1;){ printf("Vvedite chislo banknot:"); scanf("%d",&s); if (s<= 100 and s>0){ printf("Chislo banknot:%d\n",s); printf("Vvedite nominali banknot cherez ENTER,v poriadke vozrastania:"); y++;} else printf("Povtorite popitku");} int *n; n=(int*) malloc(s * sizeof(int));//Массив банкнот int i; int d; for (i=0;i<=s-1;){ scanf("%d",&d); if (d<1000000 and d>0){ d=n[i]; i++;} else printf("Vvedite drugoi nominal");} int c;//Сумма на выдачу printf("Kakuu summu hotite poluchit?\n"); int q; for (q=0;q==0;){ scanf("%d",&c); if(c>5000000 or c<0 ){ printf("Vvedite druguu summu");} else{ printf("%d",c); q++;}} int* mas; mas=(int*)malloc(s * sizeof(int));//Массив вывода int g; n[s]=c+1; int p=s-1; for(int z=1,g=0;c!=0 and c>n[0]; ){ if(c=n[p-z]){ c=c-n[p]; n[p-z]=mas[g]; g++; } else if(c>n[p-z]){ if(c>=n[p-z+1] ){ c=c-n[p+1]; n[p-z+1]=mas[g]; g++; } else{ c=c-n[p-z]; n[p-z]=mas[g]; z++; g++;}} } if(c=0){ for(g=0;g printf("%d,",mas[g]);} else printf("imposible"); return 0;

Ответы на вопрос

#include
#include
#include
//что ты подключаешь?



К сожалению, предоставленный вами код содержит несколько ошибок. Вот некоторые из них:
Ошибка в использовании операторов сравнения: Во многих местах в коде используются операторы сравнения "and" и "or", которые являются ошибочными. В C/C++, правильные операторы сравнения - это "&&" (логическое И) и "||" (логическое ИЛИ).
Ошибки при выделении памяти для массивов: В коде используется функция
malloc
, чтобы выделить память для массивовn
иmas
, но они выделяются с неверным размером. Правильное выделение памяти должно основываться на числе банкнотs
, а не на значении введенном пользователем для номиналов. Кроме того, вместо использованияmalloc
, рекомендуется использоватьcalloc
, чтобы гарантировать инициализацию массивов в нули.Ошибки в заполнении массива
n
: После того, как пользователь вводит номиналы, значения не сохраняются в массивеn
. Вместо этого, переменнаяd
просто перезаписывает себя в каждой итерации.Ошибки в вычислении суммы на выдачу: В коде присутствует странное условие
if(c = n[p - z])
, которое является оператором присваивания, а не сравнением. Надо использовать==
для проверки равенства.Ошибки в цикле вывода: В цикле вывода
for (g = 0; g printf("%d,", mas[g]);}
, не указано условие для завершения цикла. Также пропущена закрывающая фигурная скобка послеfor
цикла.Неправильное условие для завершения второго цикла
for(y=0;y<1;)
: Этот цикл выполняется только один раз, так как условиеy < 1
всегда истинно, а затем увеличивает значениеy
на 1, что никак не используется в дальнейшем коде. Лучше заменить это на простойwhile
цикл.
Исправленный код:
c#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int s; // Число банкнот
printf("Vvedite chislo banknot: ");
scanf("%d", &s);
if (s <= 100 && s > 0) {
printf("Chislo banknot: %d\n", s);
int *n;
n = (int*)malloc(s * sizeof(int)); // Массив банкнот
printf("Vvedite nominali banknot cherez ENTER, v poriadke vozrastania:\n");
for (int i = 0; i < s; i++) {
scanf("%d", &n[i]);
if (n[i] >= 1000000 || n[i] <= 0) {
printf("Vvedite drugoi nominal\n");
i--;
}
}
int c; // Сумма на выдачу
printf("Kakuu summu hotite poluchit?\n");
scanf("%d", &c);
if (c > 5000000 || c < 0) {
printf("Vvedite druguu summu\n");
return 0;
} else {
printf("%d\n", c);
}
int* mas;
mas = (int*)calloc(s, sizeof(int)); // Массив вывода
n[s] = c + 1;
int p = s - 1;
for (int z = 1, g = 0; c != 0 && c > n[0]; ) {
if (c >= n[p - z]) {
c = c - n[p - z];
mas[g] = n[p - z];
g++;
} else if (c >= n[p - z + 1]) {
c = c - n[p - z + 1];
mas[g] = n[p - z + 1];
g++;
} else {
c = c - n[p - z];
mas[g] = n[p - z];
z++;
g++;
}
}
if (c == 0) {
for (int g = 0; g < s; g++) {
printf("%d,", mas[g]);
}
} else {
printf("imposible");
}
free(n);
free(mas);
} else {
printf("Povtorite popitku\n");
}
return 0;
}
Теперь код должен работать правильно и обрабатывать пользовательский ввод.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili