Рандомный вывод нулей - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дано натуральное число N > 2. Используя функцию rand(), произвести последовательность N целых чисел, содержащую, по крайней мере, два нуля. Напечатать сумму чисел, расположенных между последними двумя нулями. Если последние два нуля идут подряд, то напечатать НЕТ СЛАГАЕМЫХ. Массивы не использовать! Программа работает, но возник вопрос, как сделать, чтобы программа радномно выводила по-крайней мере два 0. З.Ы. Заранее спасибо
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#include <windows.h> 
#include <locale.h> 
#include <time.h> 
 
int main() 
{ 
setlocale(LC_ALL, ""); 
printf ("Задача 4"); 
printf ("\n\tДано натуральное число N > 2. Используя функцию rand()," 
"\n\tпроизвести последовательность N целых чисел, содержащую," 
"\n\tпо крайней мере, два нуля. Напечатать сумму чисел, расположенных " 
"\n\tмежду последними двумя нулями. Если последние два нуля идут подряд," 
"\n\tто напечатать НЕТ СЛАГАЕМЫХ. Массивы не использовать!\n"); 
srand(time(NULL)); 
int N,i,j; 
printf ("Введите N:"); 
scanf ("%d",&N); 
while (N<=2) 
{ 
printf("Ошибка. Введите N:"); 
scanf("%d",&N); 
} 
int sum=0; 
int P; 
int D; 
for(i=0;i<N;i++) 
{ 
D=rand()%5; 
printf("[%d]=%d \n",i,D); 
if (D>0) 
{ 
sum=sum+D; 
} 
else 
{ 
P=sum; 
sum=0; 
} 
} 

printf ("\t\n Результат:\n"); 
if (P==0) 
{ 
printf ("Нет Слагаемых \n"); 
} 
else 
{ 
printf ("Cумма чисел = %d \n",P); 
} 
return 0; 
}

Решение задачи: «Рандомный вывод нулей»

textual
Листинг программы
unsigned N = 10;
    
unsigned k = 2;
for (unsigned m = N; m > 0; --m)
{
  unsigned r = rand();
  if (r % m < k)
  {
    r = 0;
    --k;
  }
       
  printf("%u ", r);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы