Skip to content
Snippets Groups Projects
Commit 1edd95f1 authored by dali662d's avatar dali662d
Browse files

Upload New File

parent fc91a833
No related branches found
No related tags found
No related merge requests found
module teilnehmer
implicit none
private
public :: student, PUT, vgl_studiendauer, vgl_name, name
TYPE student
CHARACTER (len=30) :: vname
CHARACTER (len=30) :: nname
INTEGER :: alter
INTEGER :: semester
END TYPE
interface PUT
module procedure PUT
end interface
contains
function name(person)
type(student), intent(in) :: person
character (len=60) :: name
name = trim(person%vname)//" "//trim(person%nname)
end function name
subroutine PUT(person)
type(student), intent(in) :: person
! & als Klebelasche, da Zeile sonst zu lang (>131 Zeichen)
write(*,*) trim(name(person)), ", ", person%alter, " Jahre, ist Student im ",&
& person%semester, ". Semester."
end subroutine PUT
function vgl_studiendauer(p1, p2) result(kleiner)
! vergleich auf strikt kleiner
type(student), intent(in) :: p1, p2
logical :: kleiner
kleiner = p1%semester < p2%semester
end function vgl_studiendauer
function vgl_name(p1, p2) result(kleiner)
! vergleich auf strikt kleiner
type(student), intent(in) :: p1, p2
logical :: kleiner
kleiner = .false.
! vergleiche nachname
if (p1%nname < p2%nname) then
kleiner = .true.
elseif (p1%nname == p2%nname) then
!vergleiche vorname
if (p1%vname < p2%vname) kleiner = .true.
end if
end function vgl_name
end module teilnehmer
program teilnehmerverzeichnis
use teilnehmer
implicit none
type(student) :: p1, p2
write(*,*) "Gebe den Vornamen, Nachnamen, das Alter und Semster von Student 1 an."
read(*,*) p1
! alternativ funktioniert auch:
! read(*,*) p1%vname, p1%nname, p1%alter, p1%semester
! dies ist insbesondere nützlich, wenn die Komponenten nicht in Speicherreihenfolge eingelesen werden
CALL PUT(p1)
write(*,*) ! Leerzeile im Terminal
write(*,*) "Gebe den Vornamen, Nachnamen, das Alter und Semster von Student 2 an."
read(*,*) p2
CALL PUT(p2)
write(*,*) ! Leerzeile im Terminal
! vergleich studiendauer
if (vgl_studiendauer(p1, p2)) then ! studiendauer p1 < studiendauer p2
write(*,*) trim(name(p2)), " studiert schon laenger als ", trim(name(p2))
elseif (vgl_studiendauer(p2, p1)) then ! studiendauer p1 < studiendauer p2
write(*,*) trim(name(p1)), " studiert schon laenger als ", trim(name(p2))
else ! studiendauer p1 == studiendauer p2
write(*,*) trim(name(p1)), " und ", trim(name(p2)), " studieren gleich lang."
end if
! vergleich name
if (vgl_name(p1, p2)) then ! name p1 < name p2
write(*,*) trim(name(p1)), " ist lexikalisch vor ", trim(name(p2))
elseif (vgl_name(p2, p1)) then ! name p2 < name p1
write(*,*) trim(name(p1)), " ist lexikalisch nach ", trim(name(p2))
else ! name p1 == name p2
write(*,*) trim(name(p1)), " und ", trim(name(p2)), " haben den gleichen Namen."
end if
end program teilnehmerverzeichnis
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment