myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

C# Selbsterstelltes Programmfehler

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 30.06.12, 21:42   #1
grins^^
Time to Troll
 
Benutzerbild von grins^^
 
Registriert seit: Mar 2010
Beiträge: 129
Bedankt: 29
grins^^ ist noch neu hier! | 0 Respekt Punkte
Standard C# Selbsterstelltes Programmfehler

hey,
ich hab ein Problem mit einem selbsterstellten Programm das nicht das macht was es soll. WIe ihr vielleicht erkennt bin ich kein Informatik - Genie, weil ich des Fach noch nicht allzu lang habe.
Die Aufgabe war ein Programm zu erstellen, mit einem Feld, das 60 nach unten geht und 80 nach rechts.
Es simliert das sickern von Öl bei einer gewissen Wahrscheinlichkeit in die Spalte darunter in der Form. ( 1 = betroffenes Feld, 0 = kein Öl) Das Öl sickert immer nur nach links unten oder rechts unten, nicht direkt.
DIe Prozentzahl steht für die selbstgewählte Chance für das versickern des Öls.
Das Öl "startet " in der obersten Zeile des Feldes in den mittleren 50%. ( Con 1 - 19 kein Öl, von 20 + 50 Öl, von 60 - 79 kein Öl).

Hier nun das Programm


Das Problem ist dass egal bei welcher Prozentzahl immer in jeder Zeile die Ahnzahl der betroffenen Felder 40 ist, was ja schlecht sein kann.
Vielen dank für alle Hilfen. Bin echt am verweifeln weil ich das Programm dringend brauch.

Edit: sry für den Grammatikfehler in der Überschrift
__________________
NEIN WERDE ICH NICHT
grins^^ ist offline   Mit Zitat antworten
Ungelesen 01.07.12, 00:48   #2
saibot521_2
Anfänger
 
Registriert seit: Feb 2012
Beiträge: 35
Bedankt: 18
saibot521_2 ist noch neu hier! | 0 Respekt Punkte
Standard

hier noch mal etwas leserlicher:

PHP-Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 
ConsoleApplication1
{
    class 
Program
    
{
        static 
void Main(string[] args)
        {
            
int p 02001100000000;
            
int[,] feld = new int[6080];
            
// alles 0 setzen
            
while ((<= 59 && <= 79))
            {
                
feld[pn] = 0;
                
1;
                if (
== 79)
                {
                    
1;
                    
0;       // Fehler Nr. 1 - wurde vergessen ... hat die Folge dass nur die erste Zeile und die letzte Spalte auf Null gesetzt wurde
                
}
            }
            
// Öl in der ersten Zeile
            // Öl in der ersten Zeile und den Spalten 20 bis 59
                        // ... erste Zeile sind also 40 Felder mit Öl
            
while (<= 59)
            {
                
feld[0a] = 1;
                
1;
            }
            
Console.WriteLine("Mit welcher Prozentzahl soll das Öl durchsickern? ( Zwischen 1 u 100)");
            
Convert.ToInt32(Console.ReadLine());
            
// Sickern
            
while ((<= 59 && <= 79))
            {
                if ((
1) <= 0)
                {
                    
feld[cd] = 0;
                }
                else
                {
                    
1;
                    
1;
                    
1;
                    if (
feld[hi] == 1)
                    {
                        
1;
                    }
                    else
                    {
                        
0;
                    }
                    if (
feld[hj] == 1)
                    {
                        
1;
                    }
                    else
                    {
                        
0;
                    }
                }
                if (
== 1)
                {
                    
Random zufall = new Random();
                    
int zz zufall.Next(1100);
                    if (
zz <= b)
                    {
                    
feld[cd] = 1;
                    }
                }
                if (
== 1)
                {
                    
Random zufall = new Random();
                    
int zz zufall.Next(1100);
                    if (
zz <= b)
                    {
                        
feld[cd] = 1;
                    }
                }
                
1;
                
1;
                
0;
                
0;
            }
            while ((
<= 59))
            {
                
ConsoleWriteLine("Anzahl der betroffenen Plätze in Zeile " x);
                while (
<= 79)
                {
                    if (
feld[xy] == 1)
                    {
                        
1;
                    }
                    
1;
                }
                
1;
                
Console.WriteLine(z);
                
z=0;     // Fehler Nr. 2 - wurde vergessen, du willst ja die Ölfelder in jeder Zeile haben und nicht die Summe aller bisherigen ;)
            
}
            
Console.ReadLine();
        }
    }

saibot521_2 ist offline   Mit Zitat antworten
Ungelesen 01.07.12, 04:07   #3
Xalir
Erfahrener Newbie
 
Registriert seit: Mar 2009
Beiträge: 154
Bedankt: 56
Xalir ist noch neu hier! | 0 Respekt Punkte
Standard

Du arbeitest wohl gerne mit while? Für die Feldinitialisierung ist es einfacher mit for-Schleifen zu arbeiten. Neu bei C#? Dein Versuch sieht mir eher nach VB aus, grade solche Anweisungen wie a=a+1 schreibt man in C# einfacher mit a++.

Code:
for(int x = 0; x < 60; x++)
{
	for(int y = 0; y < 80; y++)
	{
		feld(x, y) = 0;
	}
}
Xalir ist offline   Mit Zitat antworten
Ungelesen 01.07.12, 09:54   #4
grins^^
Time to Troll
 
Benutzerbild von grins^^
 
Registriert seit: Mar 2010
Beiträge: 129
Bedankt: 29
grins^^ ist noch neu hier! | 0 Respekt Punkte
Standard

@ Xalir
ja ich arbeite wirklich eher mit while, weil des für mich logischer und leichter ist.
Und des mit a++ kannte ich bisher noch nicht

@ saibot521_2
danke für die Hilfe, hat mir echt was gebracht.
Zwar hab ich jetzt noch den Fehler dass ab der 2. Zeile immer kein Öl mehr da ist aber das bekomm ich hoffentlic irgendwie hin.

Edit:
geht aber immer noch ned 100%
liegt iwie an der Zufallszahl, weil da kommt nur selten eine neue Zahl und sonst immer die gleiche :/ hier ein Beispiel
Neue Version:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int p = 0, n = 0, a = 20, b = 0, c = 1, d = 1, e = 0, f = 0, h = 0, i = 0, j = 0, k = 0;
            int[,] feld = new int[60, 80];
            // alles 0 setzen
            while ((p <= 59 && n <= 79))
            {
                feld[p, n] = 0;
                p = p + 1;
                if (n == 79)
                {
                    n = n + 1;
                    p = 0;       
                }
            }
            // Öl in der ersten Zeile und den Spalten 20 bis 59
            // ... erste Zeile sind also 40 Felder mit Öl
            while (a <= 59)
            {
                feld[0, a] = 1;
                a = a + 1;
            }
            Console.WriteLine("Mit welcher Prozentzahl soll das Öl durchsickern? ( Zwischen 1 u 100)");
            b = Convert.ToInt32(Console.ReadLine());
            // Sickern
            while (c <= 59)
            {
                while (d <= 79)
                {
                    if (d == 0)
                    {
                        feld[c, d] = 0;
                    }
                    else
                    {
                        h = c - 1;
                        i = d - 1;
                        if (feld[h, i] == 1)
                        {
                            e = 1;

                        }
                        else
                        {
                            e = 0;

                        }
                        if (feld[h, j] == 1)
                        {
                            f = 1;

                        }
                        else
                        {
                            f = 0;
                        }
                    }
                    if (e == 1)
                    {
                        Random zufall = new Random();
                        int zz = zufall.Next(1, 100);
                        if (zz <= b)
                        {
                            feld[c, d] = 1;
                        }
                        Console.WriteLine(zz);
                    }
                    if (f == 1)
                    {
                        Random zufall = new Random();
                        int zz = zufall.Next(1, 100);
                        if (zz <= b)
                        {
                            feld[c, d] = 1;

                        }
                        Console.WriteLine(zz);

                    }

                    d = d + 1;
                    e = 0;
                    f = 0;

                }
                d = 0;
                c = c + 1;
            }

            // Werte in ner Zeile
            while ( k <= 79)
            {
                Console.Write(feld [22,k] +"|");
                k = k + 1;
            }

            int x = 0, y = 0, z = 0;
            while ((x <= 59))
            {
                
                Console.Write("Anzahl der betroffenen Plätze in Zeile " + x + " ...................  ");
                while (y <= 79)
                {
                    if (feld[x, y] == 1)
                    {
                        z = z + 1;
                        
                    }
                    y = y + 1;
                }
                Console.WriteLine(z);
                z = 0;
                y = 0;
                x = x + 1;
                    
            }
            
            Console.ReadLine();
        }
    }
}
__________________
NEIN WERDE ICH NICHT
grins^^ ist offline   Mit Zitat antworten
Ungelesen 01.07.12, 15:11   #5
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Erzeuge das Random-Objekt nicht in der Schleife sondern davor. In der Schleife natürlich weiterhin die next-Methode aufrufen.
germgerm ist offline   Mit Zitat antworten
Ungelesen 01.07.12, 15:18   #6
grins^^
Time to Troll
 
Benutzerbild von grins^^
 
Registriert seit: Mar 2010
Beiträge: 129
Bedankt: 29
grins^^ ist noch neu hier! | 0 Respekt Punkte
Standard

meinst du so?

Code:
                    Random zufall = new Random();
                    int zz = zufall.Next(1, 100);
                     if (zz <= b)
                      {
                            feld[c, d] = 1;
                       }
wenn ja dann hab ich immer noch das gleiche Problem :/
__________________
NEIN WERDE ICH NICHT
grins^^ ist offline   Mit Zitat antworten
Ungelesen 01.07.12, 18:46   #7
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von grins^^ Beitrag anzeigen
meinst du so?
Nein, ist doch gleich wie zuvor.
So habe ich es oben beschrieben:


PHP-Code:
            Random zufall = new Random();

            while (
<= 59)
            {
                while (
<= 79)
                {
                    if (
== 0)
                    {
                        
feld[cd] = 0;
                    }
                    else
                    {
                        
1;
                        
1;
                        if (
feld[hi] == 1)
                        {
                            
1;

                        }
                        else
                        {
                            
0;

                        }
                        if (
feld[hj] == 1)
                        {
                            
1;

                        }
                        else
                        {
                            
0;
                        }
                    }
                    if (
== 1)
                    {
                        
int zz zufall.Next(1100);
                        if (
zz <= b)
                        {
                            
feld[cd] = 1;
                        }
                        
Console.WriteLine(zz);
                    }
                    if (
== 1)
                    {
                        
int zz zufall.Next(1100);
                        if (
zz <= b)
                        {
                            
feld[cd] = 1;

                        }
                        
Console.WriteLine(zz);

                    }

                    
1;
                    
0;
                    
0;

                }
                
0;
                
1;
            } 
germgerm ist offline   Mit Zitat antworten
Ungelesen 01.07.12, 18:49   #8
grins^^
Time to Troll
 
Benutzerbild von grins^^
 
Registriert seit: Mar 2010
Beiträge: 129
Bedankt: 29
grins^^ ist noch neu hier! | 0 Respekt Punkte
Standard

omg es geht
vielen vielen Dank
bist echt hammer
__________________
NEIN WERDE ICH NICHT
grins^^ ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 Uhr.


Sitemap

().