Σελίδες:
  • #1 από draned στις 18 Sep 2010
  • Καθησα και συγκεντρωσα καποιους κωδικες για τους δισδιαστατους πινακες στην Visual Basic 6.0.
    Θα το εκτιμουσα πολυ αν καποιος μπορουσε να μου πει αν ειναι σωστοι αλλα κυριως να μου εξηγησει τα σημεια με κοκκινο.

    Ορισμος Πινακα
    (General)
    Option base 1
    Dim A(3,3) As Integer


    Καθε μια απο τις παρακατω ρυθμισεις βρισκεται σε διαφορετικο Command Button
    Εισαγωγη Στοιχειων
    Dim i As  Integer, j As Integer
    For i=1 To 3
    For j=1 To 3
    A(i,j)=InputBox(“γραμμη” & i & “στηλη” & j)
    Next j
    Next i


    Εμφανιση στοιχειων πινακα
    Dim i As  Integer, j As Integer
    For i=1 To 3
    For j=1 To 3
    Print A(i,j) & “   “;       το ερωτηματικο ";" δεν ειναι αντιστοιχο με το "&"; Ποια η χρησιμοτητα του στο συγκεκριμενο παραδειγμα;    
    Next j
    Print                             Γιατι μπαινει εδω ενα Print σκετο;
    Next i


    Αθροισμα στοιχειων
    Dim i As  Integer, j As Integer, sum As Integer
    sum=o
    For i=1 To 3
    For j=1 To 3
    sum=sum+A(i,j)
    Next j
    Next I
    Print “Αθροισμα στοιχειων:” & sum


    Μεγιστο στοιχειο πινακα
    Dim i As  Integer, j As Integer, max As Integer
    max=1
    For i=1 To 3
    For j=1 To 3
    If A(i,j)>max Then
    max=A(i,j)
    End If
    Next j
    Next i
    Print “Μεγιστο στοιχειο:” &  max

    Μεγιστο στοιχειο ανα γραμμη
    Dim i As  Integer, j As Integer, max As Integer
    For i=1 To 3
    max=A(i,1)                                 Γιατι δεν λεμε Α(1,1);
    For j=1 To 3
    If A(i,j)>max Then
    max=A(i,j)
    End If
    Next j
    Print “Μεγιστο στοιχειο γραμμης:” & i & “=” &  max
    Next i


    Αθροισμα στοιχειων ανα γραμμη
    Dim i As  Integer, j As Integer, sum As Integer
    For i=1 To 3
    sum=0
    For j=1 To 3
    sum=sum+A(i,j)
    Next j
    Print “Αθροισμα στοιχειων γραμμης:” & i & “=” &  sum
    Next i


    Γινομενο στοιχειων ανα στηλη
    Dim i As  Integer, j As Integer, gin As Integer
    For j=1 To 3
    gin=1
    For i=1 To 3
    gin=gin*A(i,j)
    Next i
    Print “Γινομενο στοιχειων στηλης:” & j & “=” & gin
    Next j

    Πληθος στοιχειων μεγαλυτερο απο 5
    Dim i As  Integer, j As Integer, counter As Integer
    counter=0
    For i=1 To 3
    For j=1 To 3
    If A(i,j)>5 Then
    counter=counter+1
    End If
    Next j
    Next I
    Print “Πληθος στοιχειων >5:” & counter
  • #2 από Fourier στις 18 Sep 2010
  • Δεν ξέρω Visual Basic (την σύνταξή της εννοώ) αλλά μπορώ να φανταστώ τι παίζει στην εμφάνιση στοιχείων. Το " " μπαίνει για να εμφανίζονται τα στοιχεία της γραμμής με ένα κενό μεταξύ τους, το σκέτο print μάλλον έχει το ρόλο του enter (ώστε κάθε γραμμή να εμφανίζεται κάτω από την άλλη)

    Στο μέγιστο σημείο ανά γραμμή σωστά είναι A(i,1). Ο αλγόριθμος είναι ως εξής:
    Για κάθε γραμμή i θέσε το πρώτο της στοιχείο (δηλαδή το A(i,1)) προσωρινά ως μέγιστο. Στην συνέχεια σύγκρινε με τα υπόλοιπα στοιχεία της γραμμής (δηλαδή τα A(i,j), j>=2) και αν βρίσκεις μεγαλύτερο θέτε αυτό ως το μέγιστο.
    Σκέψου το λιγάκι και θα καταλάβεις ότι αν βάλεις A(1,1) είναι λάθος (βασικά είναι σωστό μόνο για την πρώτη γραμμή, αλλά όχι για τις υπόλοιπες, π.χ., την δεύτερη, όπου θα πρέπει το πρώτο max να τεθεί το Α(2,1))

    Ηope that helps! :)

  • #3 από draned στις 18 Sep 2010
  • Ευχαριστω Fourier για την τοσο γρηγορη απαντηση.

    Δεν ξέρω Visual Basic (την σύνταξή της εννοώ) αλλά μπορώ να φανταστώ τι παίζει στην εμφάνιση στοιχείων. Το " " μπαίνει για να εμφανίζονται τα στοιχεία της γραμμής με ένα κενό μεταξύ τους, το σκέτο print μάλλον έχει το ρόλο του enter (ώστε κάθε γραμμή να εμφανίζεται κάτω από την άλλη)
    Σε σχεση με αυτο κατι τετοιο ειχα καταλαβει και εγω αλλα δεν ημουν σιγουρος.

    Σκέψου το λιγάκι και θα καταλάβεις ότι αν βάλεις A(1,1) είναι λάθος (βασικά είναι σωστό μόνο για την πρώτη γραμμή, αλλά όχι για τις υπόλοιπες, π.χ., την δεύτερη, όπου θα πρέπει το πρώτο max να τεθεί το Α(2,1))
    Αν δεν το εξηγουσες ετσι δεν θα το καταλαβαινα (μαλλον) ποτε. Ειχε κολλησει το μυαλο μου εντελως.
  • #4 από Gant στις 18 Sep 2010
  • Όταν η εντολή print τελειώνει με ένα ερωτιματικό ';' σημαίνει ότι παραμένουμε στην ίδια γραμμή.
    Όταν δεν έχουμε ';' τότε η επόμενη print θα γράψει σε νέα σειρά.
  • #5 από draned στις 18 Sep 2010
  • Ευχαριστω για την εξηγηση Gant. Δεν μπορουσα καθολου να βρω τι κανει το ";".
  • #6 από yiannakis στις 18 Sep 2010
  • Όταν η εντολή print τελειώνει με ένα ερωτιματικό ';' σημαίνει ότι παραμένουμε στην ίδια γραμμή.
    Όταν δεν έχουμε ';' τότε η επόμενη print θα γράψει σε νέα σειρά.

    Βασικά το οτι παραμένεις στην ίδια σειρά, θα το έκανε ούτως ή άλλως εαν του έλεγες τι τα εμφανίσει... π.χ. Print A(1,1).
    Α το έχεις σκέτο θα πάει απλά παρακάτω, στην προκειμένη περίπτωση για να σου εμφανίσει τον πίνακα με τη μορφή... πίνακα, και όχι απλά να σου αραδιάσει το περιεχόμενό του!
     
  • #7 από draned στις 19 Sep 2010
  • Ευχαριστω yiannakis.

    Επισης να ρωτησω, αν θελω να αποθηκευσω τα στοιχεια του πινακα (οπως να 'ναι) σε ενα αρχειο κειμενου ειναι σωστοι οι παρακατω κωδικες;
    • Dim i as Integer, j As Integer
      Open "c:/text.txt" For Output As #1
      For i=1 To 3
      For j=1 To 3
      Print #1, A(i,j)
      εδω μπορω να βαλω % "  ";
      Next j
      Next i
            Αναμεσα σ΄αυτα τα Next  μπαινει Print;   
      Close #1
    • Open "c:/text.txt" For Output As #1
      Print #1, A(1,1), A(1,2), A(1,3), A(2,1), κ.ο.κ.
      Close #1
    Καλυτερος μου φαινεται ο δευτερος τροπος. ::)

    Συγγνωμη που ρωταω απλα πραγματα, αλλα δεν λειτουργει το Visual Studio που ειχαν δωσει απο την πανεπιστημιο και δεν μπορω να τα δοκιμασω.
  • #8 από Gant στις 19 Sep 2010
  • 1.
    Print #1, A(i,j) & "  ";
    θα γράψει το A(i,j) και ένα κενό " " και θα παραμείνει στην ίδια γραμμή ';'
    Το κόμμα μετά από ένα print αφήνει μερικά κενά ώστε να φαίνονται τα στοιχεία συστοιχισμένα. Μπορείς να γράψεις δλδ.
    Print #1, A(i,j) & "  ",
    2.
    Αναμεσα σ΄αυτα τα Next  μπαινει Print;
    Καλύτερα ναι, για να αλλάζεις γραμμή και να φαίνονται τα στοιχεία σε μορφή πίνακα (στήλες και γραμμές)
     
    3.
    Print #1, A(1,1), A(1,2), A(1,3), A(2,1), κ.ο.κ.
    Βέβαια μπορείς να το γράψεις και έτσι, αλλά είναι πιο χρονοβόρο και δύσκολο στην μετατροπή αν πχ. αλλάξει το μέγεθος του μητρώου και αντί για 3χ3 έχεις πχ. 5χ5, 10χ10 κτλ.

     
    4.
    αλλα δεν λειτουργει το Visual Studio που ειχαν δωσει απο την πανεπιστημιο και δεν μπορω να τα δοκιμασω.
    Η μικροσοφτ δίνει το visual studio express δωρεάν.
     
  • #9 από draned στις 19 Sep 2010
  • Ευχαριστω αλλη μια φορα για τις πληροφοριες Gant.

    Το βρηκα αυτο που λες για το visual studio express, θα το κοιταξω αν και νομιζω οτι εχω και καπου αλλου αποθηκευμενο ενα αρχειο με το Visual studio 6.0. Βασικα μεσω του Πανεπιστημιου μπορω να κατεβασω δωρεαν την τελευταια (η τουλαχιστον μια πιο προσφατη) εκδοση του Visual Studio αλλα υποστηριζει μονο την Visual Basic .NET.
Σελίδες: