Вопрос задан 27.07.2023 в 18:10. Предмет Информатика. Спрашивает Цыденжапова Янжима.

Помогите пожалуйста найти ошибку #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;
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Безбородов Алексей.
#include
#include
#include
#include

//что ты подключаешь?
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

К сожалению, предоставленный вами код содержит несколько ошибок. Вот некоторые из них:

  1. Ошибка в использовании операторов сравнения: Во многих местах в коде используются операторы сравнения "and" и "or", которые являются ошибочными. В C/C++, правильные операторы сравнения - это "&&" (логическое И) и "||" (логическое ИЛИ).

  2. Ошибки при выделении памяти для массивов: В коде используется функция malloc, чтобы выделить память для массивов n и mas, но они выделяются с неверным размером. Правильное выделение памяти должно основываться на числе банкнот s, а не на значении введенном пользователем для номиналов. Кроме того, вместо использования malloc, рекомендуется использовать calloc, чтобы гарантировать инициализацию массивов в нули.

  3. Ошибки в заполнении массива n: После того, как пользователь вводит номиналы, значения не сохраняются в массиве n. Вместо этого, переменная d просто перезаписывает себя в каждой итерации.

  4. Ошибки в вычислении суммы на выдачу: В коде присутствует странное условие if(c = n[p - z]), которое является оператором присваивания, а не сравнением. Надо использовать == для проверки равенства.

  5. Ошибки в цикле вывода: В цикле вывода for (g = 0; g printf("%d,", mas[g]);}, не указано условие для завершения цикла. Также пропущена закрывающая фигурная скобка после for цикла.

  6. Неправильное условие для завершения второго цикла 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; }

Теперь код должен работать правильно и обрабатывать пользовательский ввод.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос