Превратить число в массиве в звезды - PullRequest
0 голосов
/ 23 сентября 2019

Я надеюсь, что кто-то может мне помочь.Я хочу создать звездочки "*" вместо моих чисел в выводе массива, 10 чисел.

Пример

Входной номер 1: 3 Номер 2: 2 Номер 10: 5

Выходной номер 1: *** Номер 2: ** Номер 10: *****

Но я получаю всегда одинаковое количество звезд.Спасибо!Дорогой Харман

#include <stdio.h>

int main()
{
    int tal[10], i, j, z;

    printf("Mata in tio tal mellan 0 och 60:\n");
    for(z=0;z<10;z++)
    {
        printf("Tal %d: ", z+1);
        scanf("%d",&tal[i]);
    }


printf("\nRita ut stapeldiagram:\n");
for(z=0;z<10;z++)
{
    printf("Tal %d: ", z + 1);

    for (j=0; j<i; j++)
    {
        printf("*");
    }
    printf("\n");
}


    return 0;
}

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Прежде всего, при сканировании пользовательского ввода вы сохраняете значение в той же позиции массива tal.Увеличьте значение i, чтобы на каждой итерации новое значение занимало новое место в памяти.

for(z=0, i=0; z<10; z++, i++)
{
    printf("Tal %d: ", z+1);
    scanf("%d",&tal[i]);
}

Во-вторых, при печати звездочек во внутреннем цикле вы выполняете итерацию с фиксированным числом i.Таким образом, он печатает фиксированное количество звезд в каждой итерации внешнего цикла.Итерируйте внутренний цикл до tal[z].Я надеюсь, что это заставит вас улыбнуться.

for(z=0;z<10;z++)
{
 printf("Tal %d: ", z + 1);

 for (j=0; j<tal[z]; j++)
  {
    printf("*");
  }
  printf("\n");
}
0 голосов
/ 23 сентября 2019

Вот ваш баг.Ваш внутренний цикл for, который печатает звезду, переопределяет индекс итерации, i.Простое решение заключается в использовании новой переменной, скажем, j, в этой строке:

for (i=0; i<tal; i++)

Для этого:

for (int j=0; j<tal; j++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...