Найди ошибки в программном коде

Определите ошибки в программном коде, предложенном ниже.
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);

Больше интересных новостей

Понравилась статья? Поделить с друзьями:
  • Найди ошибки в программе var a b c integer
  • Найди ошибки в программе program имя
  • Найди ошибки в программе program primer
  • Найди ошибки в программе program pokupka
  • Найди ошибки в предложении для детей