iB-InformatikBoard.ch - Benutzer helfen Benutzern   IT-Lohnumfrage ¦ MS-CLIP ¦ Google  


     
     
"5.3 Sterne"   

    Diskussionen über Freizeit und Job: Diskussionen über Weiterbildung: Diskussionen über die Computerwelt:  
    Neu hier? Forum für Einsteiger
Wichtige F.A.Q.'s und Regeln
Off Topic
iB-Updates und News
Feedback und Vorschläge
Informatik Job-Forum
Ich suche eine Informatikstelle
Ich biete eine Informatikstelle
Microsoft MCSE Zertifikate
Microsoft Zertifikate Allgemein
CISCO Zertifikate
SIZ-Zertifikaten und Lernhilfen
Zertifikate und Diplome Allgemein
Weiterbildung mit E-Learning
Windows Workstation   Windows Server
Software Allgemein   Linux Software
Programmiersprachen   Webdesign
Security   Internet
Hardware/Netzwerk   Wireless
Pockets, Smartphones, PDA's   Games
Allgemeine Tipps, Bücher und Tools
HowTo    Online Schnäppchen
 
   

Willkommen auf informatikBoard.ch - Benutzer helfen Benutzern
Zurück   iB-Startseite > Informiere dich über die Computerwelt: Geräte, Hard- und Software > Programmiersprachen Allgemein
Willkommen bei InformatikBoard.ch:
Bevor du Schreiben oder Antworten kannst,
musst du dich hier kostenlos Registrieren!

Antwort
 
LinkBack Themen-Optionen
vb.net - gerade Zahlen zählen
Alt
  (#1)
Fortgeschrittener Benutzer
 
Benutzerbild von garfield
 
Status: Offline
Beiträge: 102
Registriert seit: 01.09.2004
Ort: Zürich
Alter: 23
Frage vb.net - gerade Zahlen zählen - 28.11.2006, 21:35

hi all,

bin ein newbie in sachen programmierung. ich versuche mich gerade im visual studio 2005. habe eine aufgabe bekommen, zahlen zu addieren. d.h wenn ich z.b. 5 ins eingabe feld schreibe, rechnet das programm 1+2+3+4+5 und gibt mir 15 als resultat aus.

jetzt kommts, der zweite schritt ist, dass nur gerade zahlen gezählt werden. d.h. wenn ich 8 eintippe -> 2+4+6+8, wenn ich 5 eintippe -> 2+4

kann mir da jemand weiterhelfen? dürfte wür erfahrene programmerier wohl kaum schwierig sein

thx

code schnipsel...
Code:
        Dim i, Zwischensumme As Integer
        For i = 1 To Me.txtEingabe.Text
            Zwischensumme = Zwischensumme + i
            Me.txtSumme.Text = Zwischensumme.ToString
        Next
   
Mit Zitat antworten
vb.net - gerade Zahlen zählen
 
Links zum gleichem Thema:
Alt
  (#2)
Erfahrener Benutzer
 
Status: Offline
Beiträge: 434
Registriert seit: 24.11.2005
Ort: Brüttelen, Röschtigraben
Alter: 22
Standard 28.11.2006, 22:19

Ich hab zwar weder Ahnung von coden, noch von VB, aber du kannst ja ne Funktion bauen, die schaut, ob die Zahlen durch 2 teilbar sind ohne Rest. Wenn ja, dann gerade, wenn nicht, dann ungerade.


Documentation is like sex: when it is good, it is very, very good; and when it is bad, it is better than nothing.

Certis: VMware VCP
 DarkLordSilver eine Nachricht über ICQ schicken  
Mit Zitat antworten
Alt
  (#3)
Moderator
 
Benutzerbild von zer00
 
Status: Offline
Beiträge: 2,563
Registriert seit: 07.11.2003
Ort: The Sprawl
Alter: 32
Standard 28.11.2006, 22:46

Der Befehl Mod gibt dir den Rest einer Division zurück. Somit kannst Du immer wenn die Bedingung (x mod 2 = 0) wahr ist, x zu deiner Zwischensumme addieren.

Hier ein Beispiel in Delphi (Pascal)

<blockquote><pre><font face="verdana,arial,helvetica"size="1"class="sf">C ode</font><hr><font face="verdana,arial,helvetica"size="1"class="sf">f unction TForm1.SumMod(value: integer): string;
var dummy: integer;
begin
dummy:= 0;
while value > 0 do
begin
if(value mod 2 = 0) then
dummy:= dummy + value;
dec(value);
end;
result:= intToStr(dummy);
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if(key = 13) then
begin
key:= 0;
Edit2.Text:= SumMod(StrToInt(Edit1.Text));
end;
end;
<hr></font></pre></blockquote>

grz zer00

Geändert von zer00 (04.12.2006 um 12:17 Uhr).
   
Mit Zitat antworten
Alt
  (#4)
Erfahrener Benutzer
 
Benutzerbild von mcnobrain
 
Status: Offline
Beiträge: 296
Registriert seit: 02.11.2004
Ort: GR
Alter: 27
Standard 28.11.2006, 22:51

Hier mal die Mod funktion..in VB

Try

Me.Cursor = Cursors.WaitCursor
Dim i As Integer
Dim sErgebnis As String = "Ganzzahliger Teiler:1"
For i = 2 To intZahl

If intZahl Mod i = 0 Then

sErgebnis = sErgebnis + ", " + i.ToString

End If
Next
Me.Cursor = Cursors.Default
Return sErgebnis


Catch ex As Exception
MessageBox.Show(ex.ToString)

End Try


Never touch a running system
   
Mit Zitat antworten
Alt
  (#5)
Moderator
 
Benutzerbild von zer00
 
Status: Offline
Beiträge: 2,563
Registriert seit: 07.11.2003
Ort: The Sprawl
Alter: 32
Standard 28.11.2006, 22:56

Hier noch die EXE.

grz zer00
Angehängte Dateien
Dateityp: zip modulo.zip‎ (162.8 KB, 6x aufgerufen)
   
Mit Zitat antworten
Alt
  (#6)
Moderator
 
Benutzerbild von remix
 
Status: Offline
Beiträge: 683
Registriert seit: 15.01.2005
Ort: Oberbuchsiten
Alter: 36
Standard 28.11.2006, 23:33

Manchmal muss man auch ein Problem analysieren können, bevor man anfängt Lösungen zu suchen!

Als Mathematiker sage ich hier nur:

Gerade Summe bis zum Summanden n

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = (n+2) * n / 4

Bei Eingabe von z.B. 8 liefert diese Formel automatisch 20

Edit:
@zer00: dein zip ist eigentlich ein rar und mit meiner Formel mache ich das sogar in Excel!


Dieses Posting wurde aus 100% rezyklierten Elektronen hergestellt
und kann für die Umwelt absolut unschädlich gelöscht werden.

Geändert von remix (28.11.2006 um 23:38 Uhr).
   
Mit Zitat antworten
Alt
  (#7)
Erfahrener Benutzer
 
Benutzerbild von pantheros
 
Status: Offline
Beiträge: 318
Registriert seit: 04.06.2006
Ort: zu Hause
Standard 29.11.2006, 08:07

Wir sind alle stolz auf dich und auf dein mathematisches Können. Gratuliere. [/ironie]

bye, pantheros


"There is no such thing as a best solution, be it a tool, a language, or an operating system. There can only be systems that are more appropriate in a particular set of circumstances."
 pantheros eine Nachricht über ICQ schicken pantheros eine Nachricht über MSN schicken  
Mit Zitat antworten
Alt
  (#8)
Moderator
 
Benutzerbild von zer00
 
Status: Offline
Beiträge: 2,563
Registriert seit: 07.11.2003
Ort: The Sprawl
Alter: 32
Standard 29.11.2006, 12:13

Zitat:
Original geschrieben von remix


Edit:
@zer00: dein zip ist eigentlich ein rar und mit meiner Formel mache ich das sogar in Excel!
Huch, ja da hast Du recht.
Ich werde das noch ändern.

grz zer00
   
Mit Zitat antworten
Alt
  (#9)
Moderator
 
Benutzerbild von remix
 
Status: Offline
Beiträge: 683
Registriert seit: 15.01.2005
Ort: Oberbuchsiten
Alter: 36
Standard 29.11.2006, 15:06

Der Vollständigkeit halber noch die komplette Lösung der Aufgabe auch für ungerade n in einer expliziten Formel:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = (n+2) * n / 4 - (n mod 2) * (2n + 1) / 4

Der zweite Term wird automatisch nur bei ungeradem n subtrahiert und korrigiert somit die Summe.

[schwelg]
Ich liebe es einfach, mal wieder meine "alten" Mathestudien hervorzukramen.
[/schwelg]


Dieses Posting wurde aus 100% rezyklierten Elektronen hergestellt
und kann für die Umwelt absolut unschädlich gelöscht werden.
   
Mit Zitat antworten
 
Links zum gleichem Thema:
Alt
  (#10)
Fortgeschrittener Benutzer
 
Benutzerbild von MScotch
 
Status: Offline
Beiträge: 199
Registriert seit: 30.12.2003
Ort: Laupen
Alter: 21
Standard 29.11.2006, 17:28

@remix:

Einfach Genial, gibst noch mehr von denen?
  MScotch eine Nachricht über Skype™ schicken 
Mit Zitat antworten
Alt
  (#11)
Fortgeschrittener Benutzer
 
Benutzerbild von garfield
 
Status: Offline
Beiträge: 102
Registriert seit: 01.09.2004
Ort: Zürich
Alter: 23
Standard 30.11.2006, 13:56

wow.... da sind ja jede menge antworten hinzugekommen. werde mich heute abend gleich mal versuchen, das ding hinzukriegen....

@remix: also in mathe bin ich nicht so der hammer, aber die Formel is genial ;-)

@all: DANKE!

greez
   
Mit Zitat antworten
Alt
  (#12)
Moderator
 
Benutzerbild von remix
 
Status: Offline
Beiträge: 683
Registriert seit: 15.01.2005
Ort: Oberbuchsiten
Alter: 36
Standard 30.11.2006, 15:57

@Garfield:

Wenn Du tatsächlich die Lösung alternativ auch mit meiner Formel darstellen willst, kannnst Du noch mehr brillieren, indem Du erklärst, dass das eine abgewandelte Form der Gauss'schen Lösung sei.

Die Anekdote dazu

Der kleine Gauss kriegt in der Primarschule die Aufgabe alle Zahlen von 1 bis 100 zusammenzuzählen. Der Lehrer denkt sich, dass er so eine lange Zeit Ruhe habe. Nach nicht mal einer Minute präsentiert der Kleine bereits zur Verblüffung des Lehrers die Lösung! Was hat er gemacht? Er hat einfach alle Zahlen von 1 bis 100 (symbolisch) aufgeschrieben und darunter nochmals, diesmal allerdings von 100 bis 1 rückwärts. Zählt man zwei übereinanderliegende Zahlenpaare zusammen, erhält man immer 101. Das ganze wiederholt sich 100 mal, also ergibt das 10100. Jetzt hat man aber die Summe von beiden Zahlenreihen also dividiert man nochmals durch 2 und erhält als Lösung 5050. Kurz ausgeschrieben:
die Summe der ersten n natürlichen Zahlen ist n * (n + 1) / 2
Dies war der Geschichte nach die Geburtsstunde des berühmten Mathematikers Carl Friedrich Gauss.


Dieses Posting wurde aus 100% rezyklierten Elektronen hergestellt
und kann für die Umwelt absolut unschädlich gelöscht werden.

Geändert von remix (30.11.2006 um 16:00 Uhr).
   
Mit Zitat antworten
Alt
  (#13)
Fortgeschrittener Benutzer
 
Benutzerbild von garfield
 
Status: Offline
Beiträge: 102
Registriert seit: 01.09.2004
Ort: Zürich
Alter: 23
Standard 04.12.2006, 11:44

die kürzeste vb.net Variante, die ich hingekriegt habe lautet...

Code:
        Dim i, Zwischensumme As Integer
        For i = 2 To Me.txtEingabe.Text
            If Me.txtEingabe.Text Mod 2 = 1 Then
                Me.lblError.Text = "Fehler: Nur gerade Zahlen sind erlaubt!"
            ElseIf i Mod 2 = 0 Then
            Zwischensumme = Zwischensumme + i.ToString
            End If
        Next
        Me.txtSumme.Text = Zwischensumme.ToString
somit ist nur die Eingabe gerader Zahlen erlaubt, andernfalls folgt wird eine Fehlermeldung ausgegeben.

@remix: wie gesagt ich bin ein newbie in programmieren, werde mich aber mal in meiner Freizeit dazu bemühen, deine Fromel in skript einzubauen
   
Mit Zitat antworten
Alt
  (#14)
Erfahrener Benutzer
 
Benutzerbild von pantheros
 
Status: Offline
Beiträge: 318
Registriert seit: 04.06.2006
Ort: zu Hause
Standard 04.12.2006, 13:07

Wieso überprüfst du bei jedem Schleifendurchgang ob es sich um eine Geradezahl handelt in der Inputbox?

bye, pantheros


"There is no such thing as a best solution, be it a tool, a language, or an operating system. There can only be systems that are more appropriate in a particular set of circumstances."
 pantheros eine Nachricht über ICQ schicken pantheros eine Nachricht über MSN schicken  
Mit Zitat antworten
Alt
  (#15)
Fortgeschrittener Benutzer
 
Benutzerbild von garfield
 
Status: Offline
Beiträge: 102
Registriert seit: 01.09.2004
Ort: Zürich
Alter: 23
Standard 13.12.2006, 21:10

@pantheros: weil ich wie schon erwähnt... neu in diesem Gebiet bin

hier wird nicht jedesmal geprüft ob es eine gerade Zahl ist...
Code:
        Dim Teilresultat As Integer
        If CInt(Me.txtEingabe1.Text) Mod 2 = 1 Then
            Zwischensumme = CInt(Me.txtEingabe1.Text) + 1
        End If
        For i = Zwischensumme To CInt(Me.txtEingabe2.Text) Step 2
            Teilresultat = Teilresultat + i
        Next
        Me.txtSumme.Text = Teilresultat.ToString
   
Mit Zitat antworten <