Klarar du gamla högskoletentor i VB? Hej Private Sub Uppgift1(SourceFile As String, DestFile As String) Hej Andreas Hillqvist hej! Hej Option Explicit   'FormulärkodTesta dig...
    
    
Jag håller själv på och försöker lösa frågorna, skicka gärna lösningarna så att "vi" alla kan få ta del av dem.
Nedan följer några frågor från en tenta.
Fråga1. (20p)
Skriv ett program (inga delprocedurer behövs) som läser in data från en sekventiell fil (Text1.txt). Varje rad i filen innehåller 2 st ord (enbart bokstäver) åtskijlda genom ett mellanslag. Kasta om ordningsföljden på tecken i varje rad och se till att första tecknet efter mellanslaget efter omkastning blir en stor bokstav och skriv deatta till en ny fil (Text2.txt)
Ett litet exempel på hur filerna skulle kunna se ut:
text1.txt
och julen
varar väl
till påska
text2.txt
neluj Hco
läv Rarav
askåp Llit
Uppgift 2 (50p)
Följande deklarationer och kod är given:
Option Explicit  'Modulkod
Public Const MAX As Integer = 100
Public Type PersonTyp
  namn As String
  adress As String
  alder As Integer
End Type
Public Type FlightType
  passagerare (1 To MAX) As PersonTyp
  antalPassagerare As Integer   'aktuellt antal passagerare
End Type
Option Explicit   'Formulärkod
Dim flygning As FlightTyp
1.  Skriv en subrutin "yngst" som returnerar namn på den yngste passageraren med adress Malmö. Avnänd lämpliga parametrar (15p)
2.  Skriv en subrutin "kopiera" som till en array av PersoTyp lägger all information om personer med adress Eslöv. Användlämpliga parametrar (20p)
3.  Skriv en function "lundaBor" som returnerar genomsnittliga åldern på passagerare med adress Lund. Använd lämpliga paramatrar (15p)Sv: Testa dig...
    
    
Så här löste jag delprov 1
Option Explicit
'E:\Text1.txt
'konståkerska skridsko
'cykel pedal
'universum andromeda
Private Sub Command1_Click()
Dim SplitArr() As String, ReversArr(5) As String
Dim FileNum As Long, incr As Long, i As Long
Dim tmpStr As String
FileNum = FreeFile
Open "E:\Text1.txt" For Input As #FileNum
Do Until EOF(FileNum)
Line Input #FileNum, tmpStr
tmpStr = StrReverse(tmpStr)
SplitArr = Split(tmpStr)
ReversArr(incr) = SplitArr(0) & " "
incr = incr + 1
'Det skiljer alltid 32 mellan UCase LCase
Mid$(SplitArr(1), 1) = Chr$(Asc(Left$(SplitArr(1), 1)) - 32)
ReversArr(incr) = SplitArr(1)
incr = incr + 1
Loop
Close #FileNum
'*******************
FileNum = FreeFile
Open "E:\Text2.txt" For Output As #FileNum
For i = 0 To UBound(ReversArr) Step 2
tmpStr = ReversArr(i) & ReversArr(i + 1)
Print #FileNum, tmpStr
Next 'i
Close #FileNum
End Sub
mvh
SvenSv: Testa dig...
    
    
Dim intPos As Integer
Dim DestNo As Integer
Dim strLine As String
Dim SourceNo As Integer
    SourceNo = FreeFile()
    Open SourceFile For Input As #SourceNo
    
    DestNo = FreeFile()
    Open DestFile For Output As #DestNo
    
    Do Until EOF(SourceNo)
        Line Input #SourceNo, strLine
        strLine = StrReverse(strLine)
        intPos = InStr(1, strLine, " ", vbBinaryCompare)
        If intPos Then
            intPos = intPos + 1
            Mid$(strLine, intPos, 1) = UCase$(Mid$(strLine, intPos, 1))
        End If
        Print #DestNo, strLine
    Loop
    
    Close #DestNo
    Close #SourceNo
End SubSv: Testa dig...
    
    
Den var vacker. Förstår inte riktigt vad vbBinaryCompare
gör här  (på riktigt). Fö. tycker jag att det är onödigt att deklarera som
Integer i ett 32 bits system
Men Än en gång . Den Var Vacker !
mvh
SvenSv: Testa dig...
    
    
Man har hela 4 timmar på sig på dessa tentor..
men som nybörjare (som jag själv) så kan det bli knegigt ändå. 
Tack alla som försökt sig på uppgifterna..
Mvh
DraganSv: Testa dig...
    
    
Jag snodde ihop mitt första ex på 25 minuter fritt
ur minnet. Utvecklingen går framåt Andreas lösning
skulle jag aldrig komma på.
Skall med stor frennesi angripa prov 2.
mvh
SvenSv: Testa dig...
    
    
Dim flygning As FlightType
'1.  Skriv en subrutin "yngst" som returnerar namn på den yngste passageraren med adress Malmö. Avnänd lämpliga parametrar (15p)
Private Sub yngst(Svar As String)
Dim I As Long
Dim Age As Long
    For I = 1 To 100
        With flygning.passagerare(I)
            If .adress = "Malmö" Then
                If Age Then
                    If .alder < Age Then
                        Age = .alder
                        Svar = .namn
                    End If
                Else
                    Age = .alder
                    Svar = .namn
                End If
            End If
        End With
    Next
End Sub
'2.  Skriv en subrutin "kopiera" som till en array av PersoTyp lägger all information om personer med adress Eslöv. Använd lämpliga parametrar (20p)
Private Sub kopiera(Personer() As PersonTyp)
Dim I As Long
Dim Count As Long
    For I = 1 To 100
        With flygning.passagerare(I)
            If .adress = "Eslöv" Then
                Count = Count + 1
                ReDim Preserve Personer(1 To Count)
                Personer(Count) = flygning.passagerare(I)
            End If
        End With
    Next
End Sub
'3.  Skriv en function "lundaBor" som returnerar genomsnittliga åldern på passagerare med adress Lund. Använd lämpliga paramatrar (15p)
Private Function LundaBor() As Double
Dim I As Long
Dim Count As Long
Dim Sum As Long
    For I = 1 To 100
        With flygning.passagerare(I)
            If .adress = "Lund" Then
                Count = Count + 1
                Sum = Sum + .alder
            End If
        End With
    Next
    
    If Count Then
        LundaBor = Sum / Count
    End If
End Function