Определите ошибки в программном коде, предложенном ниже.
a = input(‘a=’)
s = 0
for i in range(1,10):
s = s + i
a= a * i
print(s/a)
(Напишите, пожалуйста, правильный код и объяснение)
Остались вопросы?
Новые вопросы по предмету Математика
Дан код:
unsigned int i;
for (i = 100; i >= 0; --i)
printf("%dn", i);
В коде есть две ошибки.
Первая заключается в том, что используется тип unsigned int
, который работает только со значениями, большими или равными нулю. Поэтому условие цикла for
всегда будет истинно, и цикл будет выполняться бесконечно.
Корректный код, выводящий значения всех чисел от 100 до 1, должен использовать условие i > 0
. Если нам на самом деле нужно вывести нулевое значение, то следует добавить дополнительный оператор printf
после цикла for
.
unsigned int i;
for (i = 100; i > 0; --i)
printf("%dn", i);
printf("%dn", i);
Вторая ошибка — вместо %d
следует использовать %u
, поскольку мы выводим целые значения без знака.
unsigned int i;
for (i = 100; i > 0; --i)
printf("%un", i);
Теперь этот код правильно выведет список чисел от 100 до 1, в убывающем порядке.
Разбор взят из книги Гейл Л. Макдауэлл «Cracking the Coding Interview» (есть в переводе).
Информатика,
вопрос задал tatowka1113,
4 года назад
Добавить свой ответ
Ответы на вопрос
Ответил Mydrec12
1
Ответ:
a=’Privet’
b=’Mir!’
print(a+’ ‘+b)
Объяснение:
Апострофы обязательны!
Добавить свой ответ
Предыдущий вопрос
Следующий вопрос
Новые вопросы
Русский язык,
2 месяца назад
Я взяла банку и увидала что вся она полна муравьями. Пожалуйста помогите расставить знаки препинания.Спасибо!
Русский язык,
2 месяца назад
проверочное слово к слову нагревалось нужно проверить букву е.
Математика,
4 года назад
|х|+(-9)=-5 решите уравнение
ПОЖАЛУЙСТА!!!!
Математика,
4 года назад
Решите 1. Только а))))…
Геометрия,
6 лет назад
помогите с 10 и 9 задачей…
География,
6 лет назад
помогите что это за страна?????????
спасибо всем…
Доброй ночи, господа. Суть такова, программа должна отсортировать массив М[50] и каждую строку матрицы А[6][7] в порядке убывания, причем и массив и матрица должны быть с динамическим выделением памяти. По итогу в функциях сортировки change1 и change2 у меня получилось все очень печально и ничего не работает, и до меня не может дойти в чем дело.
Пример того, как программа должна работать:
К примеру, массив M[5] — 2 8 3 7 1 должен отсортироваться так, чтобы получился такой результат — M[5] — 8 7 3 2 1
, а матрица A[2][4] —
5 5 7 7
1 10 8 3
должна стать такой A[2][4] —
7 7 5 5
10 8 3 1
Суть ошибки заключается в том, что вместо измененных массивов программа просто напросто ничего не выводит.
Update: Вообщем, все настолько плохо, что оказывается я забыл вызвать функцию вывода после изменения массива, но получаемый результат все равно неверный
Прикладываю полный код программы:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 50
#define M 6
#define Q 7
int input(int* a, int n)
{
int i;
for (i = 0; i < n; ++i)
{
*(a + i) = rand() % 30 - 15;
}
}
int change1(int* a, int n, int b)
{
int i, j, t;
for(i = 0; i < n - 1; i++)
{
for(j = 0; j < n - 1; j++)
{
if(*(a + i*b + j) < *(a++))
{
t = *(a++);
*(a++) = *(a + i*b + j);
*(a + i*b + j) = t;
}
}
}
}
int change2(int* a, int n, int b)
{
int i, j, t;
for(i = 0; i < n; i++)
{
for(j = 0; j < b; j++)
{
if(*(a + i*b + j) < *(a++))
{
t = *(a++);
*(a++) = *(a + i*b + j);
*(a + i*b + j) = t;
}
}
}
}
int output(int* a, int n, int m)
{
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
printf("%5d", *(a + i*m + j));
}
printf("n");
}
}
int main()
{
srand(time(NULL));
int *m, *a, g;
m = malloc(4*N);
a = malloc(4*M*Q);
input(a,M*Q);
input(m,N);
printf("Massiv A: n");
output(a,M,Q);
printf("Massiv M: n");
output(m,1,N);
printf("Izmenenniy massiv M: n");
change1(m,1,N);
printf("Izmeneniy massiv A: n");
change2(a,M,Q);
free(a);
free(m);
}
Помогите, пожалуйста, разобраться где я и что не так накодил.
Найдите ошибку в коде
12 259
17 ноября 2016 в 16:45
Простая задача, но все же требует внимательности, а также знаний в программировании. Итак, я дам вам небольшой кусочек кода, а вы скажите в чем здесь ошибка.
Вот сам код:
unsigned int i;
for (i = 100; i >= 0; --i)
printf("%dn", i);
В этом коде есть две небольшие ошибки, которые вам стоит найти.
Ошибки
Первым делом, стоит обратить внимания на неправильное определения переменной i
. Дело в том, что в данном случае оно является неверным. Тип unsigned int
говорит о том, что значения этой переменной могут быть только цифры, при чем только положительные цифры без знака минус. Данная запись приводит к тому, что цикл будет выполняться вечно, так как условие всегда будет истинным (true).
Корректный код состоял бы из такого условия i > 0
. Он мог бы вывести все значения, кроме нуля. Цикл завершился бы и тогда мы могли бы после самого цикла прописать еще и вывод 0
. К примеру, у нас бы получилось нечто вроде этого:
unsigned int i;
for (i = 100; i > 0; --i)
printf("%dn", i);
printf("%dn", i);
Вторая ошибка намного проще и заключается в том, что мы используем %d
вместо того чтобы использовать %u
. Поскольку мы выводим числа без минуса, то именно так должно все быть. В итоге у нас получился вот такой код, который верно выводит значения от 100 до 1:
unsigned int i;
for (i = 100; i > 0; --i)
printf("%un", i);
Больше интересных новостей