Mögliche Lösung zur Binärzahlen erzeugen Aufgabe

Die Aufgabenstellung finden Sie hier

C

binnum.c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
 
void binnum ( int length )
{
    for (int i=0; i< (1<<length); i++)
    {
        int mask = (1<<(length-1));
        for (int j=0; j<length; j++)
        {
            if ((i&mask) == 0)
                putchar ('0');
            else 
                putchar ('1');
            mask >>= 1;
        }
        putchar('\n');
    }
}
 
int main (int argc, char* argv[])
{
    if (argc<=1)
        return 0;
 
    int length = atoi(argv[1]);
 
    if (length<=0)
        return 0;
 
    binnum ( length );
}

Fortran

bin.F90
PROGRAM main
  implicit none
  integer :: length = 0;
  write (*,"(A,$)") "Bitte eine Laenge eingeben: "
  read (*,*) length
 
  call bin ( length )
  write (*,*) " "
END PROGRAM
 
SUBROUTINE bin ( length )
  implicit none
  integer :: maxi, k, length
 
  ! 2 ^ length
  maxi = 2**length -1
 
  do k=0, maxi
    call dec2bin_mod ( k, length )
    write (*,*) ""
  enddo 
END SUBROUTINE
 
recursive SUBROUTINE dec2bin_mod ( zahl, length )
  implicit none
  integer :: zahl, tmp, k
  integer,INTENT(in) :: length
 
  if (zahl > 0) then
    tmp = mod(zahl, 2)
    call dec2bin_mod ( zahl / 2, length-1 )
    write (*,"(I1,$)") tmp
  else
    do k=1, length
      ! führende Nullen ausgeben (auf die angebene Länge ausdehnen)
      write (*,("(A,$)")) "0"
    enddo
  endif
END SUBROUTINE