2015-02-10 3 views
-1

Я новичок в кодировании, и у меня есть вопрос о том, как сократить код с помощью функции. Моя проблема с домашней работой говорит о том, что мне нужно вынуть вложенные петли и сократить мой предыдущий код с помощью функций, и мне нужно немного начать скачок. Этот код отображает 100 случайных шестнадцатеричных цветов. Я извиняюсь за грязный код, все еще учась.Укорачивание кода с использованием функций

#include <iostream> 
#include <cstdlib> 
#include <ctime> 
using namespace std; 

int main(){ 
    srand(time(0)); 
     for(int j=0; j<100; j++){ 
     for(int i=0; i<6; i++){ 
      int digit = rand() % 16; 
      char letter; 
      if(digit > 9){ 
      letter = digit + 55; 
      cout << letter; 
      } 
      else{ 
       cout << digit; 
      } 
     } 
    cout << endl; 
    } 
return 0; 
} 
+1

насчет создания 100 случайных десятичных целых чисел, а затем печатать их в виде шестнадцатеричной (с помощью 'станд :: hex')? – sjaustirni

+1

Обычно вы должны переводить код в функции, если эта часть кода выполняет определенную работу. В этом случае вы не делаете ничего конкретного, что можно использовать повторно. – Jagannath

+1

Избегайте магического номера '55', вместо этого используйте' 'A '- 10'. – Jarod42

ответ

1

Ваша постановка проблемы предлагает вам изменить код следующим образом, но учтите, что это не уменьшает размер кода, просто делает его более удобным для чтения:

#include <iostream> 
#include <cstdlib> 
#include <ctime> 
using namespace std; 

void innerLoop(){ 
    char letter; 
    int digit; 
    for (int i = 0; i<6; i++){ 
     digit = rand() % 16; 
     if (digit > 9){ 
      letter = digit + 55; 
      cout << letter; 
     } 
     else{ 
      cout << digit; 
     } 
    } 
} 

int main(){ 
    srand(time(0)); 
    for (int j = 0; j<100; j++){ 
     innerLoop(); 
     cout << endl; 
    } 
    return 0; 
} 
+0

Спасибо! Это действительно помогло мне в понимании функций! – Ted26

1

В качестве альтернативы код неистовство»изменение кода , есть более простое решение (хотя и не обязательно образовательное) - генерирование 1000 десятичных чисел целых чисел, а затем их преобразование в шестнадцатеричное число при печати с использованием std::hex.

#include <iostream> 
#include <cstdlib> 
#include <ctime> 
using namespace std; 

int main(){ 
    srand(time(0)); 
    for(int j=0; j<100; j++){ 
     int number = rand() % 1000; // Or whatever your upper limit is. 
     cout << hex << number << endl; 
    } 
    cout << endl; 
    return 0; 
} 
+1

Спасибо! Я обязательно буду учитывать это в следующий раз при использовании std :: hex. – Ted26

0

Самый внутренний цикл генерирует случайную шестнадцатеричную цифру и печатает это.
Давайте вспыхивают поколение цифр в функции:

char random_digit() { 
    int digit = rand() % 16; 
    if (digit > 9) { 
     return digit - 10 + 'A'; 
    } 
    else { 
     return digit; 
    } 
} 

int main() { 
    srand(time(0)); 
    for(int j = 0; j < 100; j++) { 
     for(int i = 0; i < 6; i++){ 
      cout << random_digit(); 
     } 
     cout << endl; 
    } 
} 

Теперь у нас есть цикл, который печатает ряд случайных цифр.
Мы можем превратить это в функцию.
Давайте дадим ему параметр, поэтому мы не должны жестко закодировать длину:

void print_number(int length) { 
    for (int i= 0; i < length; i++) { 
     cout << random_digit(); 
    } 
    cout << endl; 
} 

// New main 
int main() { 
    srand(time(0)); 
    for(int j = 0; j < 100; j++) { 
     print_number(6); 
    } 
    return 0; 
}