2010-07-21 2 views
-2

здесь код из жемчуга программирования этот код печатает случайные числа в убывающем формурэнд выбрать между п и т

void randselect(m,n){ 
pre 0<=m<=n; 
poset : m distinct integers from 0 ...n-1 printed in decreasing form 
if (m>0) 
if (bigrand() %n)<m 
print n-1//here i dont understand print n-1 what means?printf(n-1) or?i will show code 
randselect(m-1.n-1); 
else 
randselect(m,n-1) 

есть еще один вопрос: как печатать его рост порядка? вот код, который содержит ошибки

#include <iostream> 
#include <stdlib.h> 
#include <stdio.h> 
using std::cout; 
using std::printf; 
using namespace std; 

int bigrand(){ return RAND_MAX*rand()+rand();} 

void randselect(int n,int m) 
{ 
    if (m>0) 
    if (bigrand()%n<m) 
    { 
     printf("",n-1); 
     randselect(m-1,n-1); 
    } 
    else{ 
     randselect(m,n-1); 
    } 
} 
int main() 
{ 
    int m,n; 

    cin>>n>>m; 
    randselect(n,m); 

    return 0; 
} 

пожалуйста, помогите не показать мне какой-либо вывод в соответствии с основным кодом, что ошибка в моем коде?

+0

Кстати, заголовок здесь вводит в заблуждение. Ваша проблема здесь не имеет ничего общего с тем, что вы пытаетесь сделать. –

+0

Кстати, ваш код содержит много других синтаксических ошибок. – BoltClock

+0

Какой будет правильный код? –

ответ

1

Проблема с выходом printf("",n-1);, которая не имеет спецификатора формата и, следовательно, ничего не делает с остальными значениями функции.

Измените его на что-то вроде printf("%d\n", n - 1);, в котором будет напечатано одно целое число (%d) за строку (\n).

1

Ваш printf просто распечатывает пустую строку. Попробуйте printf("%d", n-1)

Смежные вопросы