Microsoft Visual C# 2005

Diskutiere Microsoft Visual C# 2005 im Developer Network Forum im Bereich Hardware & Software Forum; Guten Tag, kennt sich jemand mit diesem Programm aus? Wenn ich ne Datei erstellt habe und diese abspeichere, um sie zu einem späteren Zeitpunkt...
  • Microsoft Visual C# 2005 Beitrag #1
H

Hexer1985

Bekanntes Mitglied
Dabei seit
07.02.2006
Beiträge
146
Reaktionspunkte
0
Ort
Stuttgart / Karlsruhe
Guten Tag,

kennt sich jemand mit diesem Programm aus? Wenn ich ne Datei erstellt habe und diese abspeichere, um sie zu einem späteren Zeitpunkt wieder zu öffnen, dann kann ich sie zu diesem späteren Zeitpunkt nichtmehr debuggen. Kann mir da jemand sagen wo mein Fehler liegt oder wie ich das abstellen kann?

Thx. Gruss Hexer
 
  • Microsoft Visual C# 2005 Beitrag #2
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Dazu müßte ich verstehen, was genau Du da eigentlich meinst/tust.

Man arbeitet in VS nicht mit einer einzelnen Datei, sondern mit einem ganzen Projekt. Dort stellst Du ein, daß Du eine Debug-Version erzeugen möchtest und kannst das Programm dann auch problemlos debuggen.

Wenn Du das nächste mal das Projekt öffnest, funktioniert das Debuggen genauso.
 
  • Microsoft Visual C# 2005 Beitrag #3
H

Hexer1985

Bekanntes Mitglied
Dabei seit
07.02.2006
Beiträge
146
Reaktionspunkte
0
Ort
Stuttgart / Karlsruhe
Vielleicht hab ich auch das Programm nur nicht im Griff :) Ich hab nie das Projekt abgespeichert sondern nur die Codefiles. Ich benutz des Programm erst seit 3 Tagen deswegen bin ich noch net so drin :) Ich muss jedesmal nur kleine Programme schreiben bis jetzt, Zahlen addieren, Hallo Welt etc. soll ich da jedesmal n neues Projekt speichern? Danke schonmal im Vorraus
 
  • Microsoft Visual C# 2005 Beitrag #4
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Am einfachsten ist es, für jede Aufgabe ein eigenes Projekt zu machen. Auch wenn das Projekt nur aus einer Klasse besteht. Natürlich darfst Du beim Beenden von VS nicht vergessen, alles zu speichern ;-)
Deine Klasse legst Du dann am besten mit dem Class-Wizard (Add->Class) an. Die so erzeugte .CS-Datei findest Du dann im Solution-Explorer.

So kannst Du jederzeit ein altes Projekt wieder laden und debuggen. Natürlich könnte man auch für alle Aufgaben ein gemeinsames Projekt anlegen. Aber ersteres ist für den Anfang leichter.
 
  • Microsoft Visual C# 2005 Beitrag #5
H

Hexer1985

Bekanntes Mitglied
Dabei seit
07.02.2006
Beiträge
146
Reaktionspunkte
0
Ort
Stuttgart / Karlsruhe
OK, dann werd ich mal versuchen das so zu machen und werd dann mal schauen obs geht und meld mich dann nochmal, danke :)
Kennst du dich da weiters aus und kannst mir evt. auch Code-technisch mal helfen?
 
  • Microsoft Visual C# 2005 Beitrag #6
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Solange ich nicht Deine Hausaufgaben machen muß ;-)

Aber solche Fragen sind dann besser im Developer-Forum aufgehoben.
 
  • Microsoft Visual C# 2005 Beitrag #7
H

Hexer1985

Bekanntes Mitglied
Dabei seit
07.02.2006
Beiträge
146
Reaktionspunkte
0
Ort
Stuttgart / Karlsruhe
Ich versuchs mir soweit es geht selber klarzumachen weil ich muss es ja dann in der Prüfung auch können, also folgende Aufgabenstellung:
Ein Teiler einer ganzen Zahl n ist eine ganze Zahl, die keinen Rest liefert, wenn man n durch diese Zahl teilt. Zum Beispiel ist n selbst ein Teiler von n genauso wie die 1. Wenn eine Zahl keine anderen Teiler hat, heißt Sie Primzahl.

Für jede ganze Zahl untersuchen wir jetzt alle kleineren ganzen Zahlen bis zur 1 einschließlich und machen jedes Mal einen Strich, wenn eine Zahl mit n keinen Teiler gemeinsam hat außer der 1. Die Anzahl der Striche nennt man die "Eulersche Funktion" von n.

Schreiben Sie ein Programm, das eine positive, ganze Zahl liest und zu dieser Zahl die Eulersche Funktion berechnet.

Bis jetzt funktioniert erstmal garnix :)

Console.WriteLine("Geben sie bitte eine positive Zahl ein:");
int zahl = Convert.ToInt32(Console.ReadLine());
int zähler =zahl;

while (zähler >= 1)
{
double erg = zahl / zähler;
--zähler;

Console.WriteLine(erg);

Wieso bekomm ich als Ergebniss immer 1? Des is noch meilenweit von der Komplettlösung entfernt zu der ich dann zu gegebener Zeit noch folgende Fragen hätte:
-Wie kann ichs realisieren, dass er immer nen Strich macht wenns kein Teiler von der eingegeben Zahl ist? Bitte habt nachsehen mit mir bin noch n Noob!
 
  • Microsoft Visual C# 2005 Beitrag #8
H

Hexer1985

Bekanntes Mitglied
Dabei seit
07.02.2006
Beiträge
146
Reaktionspunkte
0
Ort
Stuttgart / Karlsruhe
Sry mein Fehler, bitte löschen!
 
Zuletzt bearbeitet:
  • Microsoft Visual C# 2005 Beitrag #9
H

Hexer1985

Bekanntes Mitglied
Dabei seit
07.02.2006
Beiträge
146
Reaktionspunkte
0
Ort
Stuttgart / Karlsruhe
static void Main()
{
Console.WriteLine("Geben sie bitte eine positive Zahl ein:");
int zahl = Convert.ToInt32(Console.ReadLine());
int zähler =zahl;

while (zähler >= 1)
{
double erg =(zahl / zähler);
--zähler;

Console.WriteLine(erg);

}
Console.ReadLine();
}
Hab den Fehler gefunden. Jetzt würd ich gern wissen, wieso erg immer als Ganzzahl ausgegeben wird obwohl ichs als double definiert hab und n Ansatz wie ich weiter machen könnte. Ich hätte überlegt mit ner IF-Anweisung aber ich weiss net wie ich die Bedingung definieren könnte. In Worten so in die Richtung if(teiler ganzzahlig) {Console.Writeline("-")}; und dann am Schluss ne Zählung der - oder so
 
Zuletzt bearbeitet:
  • Microsoft Visual C# 2005 Beitrag #10
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Hexer1985 schrieb:
Hab den Fehler gefunden. Jetzt würd ich gern wissen, wieso erg immer als Ganzzahl ausgegeben wird obwohl ichs als double definiert hab und n Ansatz wie ich weiter machen könnte. Ich hätte überlegt mit ner IF-Anweisung aber ich weiss net wie ich die Bedingung definieren könnte. In Worten so in die Richtung if(teiler ganzzahlig) {Console.Writeline("-")}; und dann am Schluss ne Zählung der - oder so
Der ausgegebene Wert ist deshalb ganzzahlig, weil "zahl" ein int ist, deshalb: int / double => int. Der Ergebnistyp orientiert sich hier am int, also dem Dividenden. Wenn Du den Dividenden zum double machst, dann bekommst Du das gewünschte Ergebnis:
Code:
double erg = ((double)zahl / zähler);
Allerdings bringt Dich das nicht wirklich weiter.

Zur zweiten Frage: Wenn Du wissen willst, ob eine Division einen Rest ergibt, dann verwendest Du am besten den MODULO-Operator (%). Beispiel: 10 / 3 = 3 Rest 1 =>
Code:
10 % 3 = 1
Damit sollte Dein Problem lösbar sein ;-)
 
  • Microsoft Visual C# 2005 Beitrag #11
H

Hexer1985

Bekanntes Mitglied
Dabei seit
07.02.2006
Beiträge
146
Reaktionspunkte
0
Ort
Stuttgart / Karlsruhe
Jeah, danke! Ist es richtig das ich dann meinen Zähler auch in double umändern muss (sonst bekomm ich ne Fehlermeldung)? Jetzt hab ich folgende Probleme:

- Er fängt erst mit der nächst kleineren Zahl an zu teilen, was sich dadurch beheben lässt das "zähler=(zahl +1)" gehts auch eleganter?
- Die Ergebnisse sind falsch z.b. die letzten Ergebnisse von der Eingabe 24 ->

24:4=4,8
24:3=6
24:2=8
24:1=12

Ich wag mich solange mal an den %-Operator und versuch mit dem was zu realisieren, aber der Ansatz stimmt? Jetzt weiss ich auch was du damit meinst es wird mich kaum weiterbringen :) Im Prinzip brauch ichs net , aber ohne des hätte ich nicht gesehen, das die Ergebnisse falsch sind...
 
Zuletzt bearbeitet:
  • Microsoft Visual C# 2005 Beitrag #12
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Hexer1985 schrieb:
Jeah, danke! Ist es richtig das ich dann meinen Zähler auch in double umändern muss (sonst bekomm ich ne Fehlermeldung)? Jetzt hab ich folgende Probleme:
Nein, sorry, da hab ich Murks erzählt. zähler ist ja auch ein int. Es reicht, wenn entweder Dividend oder Divisor vom Typ double ist, damit das Ergebnis auch ein double ist.

- Er fängt erst mit der nächst kleineren Zahl an zu teilen, was sich dadurch beheben lässt das "zähler=(zahl +1)" gehts auch eleganter?
- Die Ergebnisse sind falsch z.b. die letzten Ergebnisse von der Eingabe 24 ->

24:4=4,8
24:3=6
24:2=8
24:1=12

Ich wag mich solange mal an den %-Operator und versuch mit dem was zu realisieren, aber der Ansatz stimmt?
Da hast Du wahrscheinlich irgendwas am Code vermurkst.
Der Ansatz ist, zu prüfen, ob 2 Zahlen einen gemeinsamen Teiler haben. Wenn nicht, dann sind sie teilerfremd und Du kannst ein - malen.
 
  • Microsoft Visual C# 2005 Beitrag #13
H

Hexer1985

Bekanntes Mitglied
Dabei seit
07.02.2006
Beiträge
146
Reaktionspunkte
0
Ort
Stuttgart / Karlsruhe
using System;

class App
{
static void Main()
{
Console.WriteLine("Geben sie bitte eine positive Zahl ein:");
double zahl = Convert.ToDouble(Console.ReadLine());
double zähler = (zahl + 1);

while (zähler > 1)
{
if (zahl % zähler != 0)
{
Console.WriteLine("-");
}
--zähler;

//double erg =(zahl / zähler);
//Console.WriteLine(zahl + ":" + zähler + "=" + erg );
}
//Console.WriteLine("Die Eulersche Funktion der Zahl " + zahl + " ist " + ?);

Console.ReadLine();
}

}
Ich bin mir unsicher ob ich jetzt des gemacht hab, was verlangt ist. Er macht jetzt immer nen Strich wenn das Ergebniss ne Division mit Rest ist. Das soll so sein!? Irgendwie steh ich aufm Schlauch, ich hab jetzt aber keine Ahnung wie ich die Striche zählen kann!
 
  • Microsoft Visual C# 2005 Beitrag #14
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Hexer1985 schrieb:
Ich bin mir unsicher ob ich jetzt des gemacht hab, was verlangt ist. Er macht jetzt immer nen Strich wenn das Ergebniss ne Division mit Rest ist. Das soll so sein!? Irgendwie steh ich aufm Schlauch, ich hab jetzt aber keine Ahnung wie ich die Striche zählen kann!
Die Striche zu zählen ist kein Problem. Zu Anfang einfach ein int striche = 0;
Und jedesmal, wenn einer dazukommt, striche++;

Allerdings paßt Dein Algorithmus noch nicht. So wie ich die Aufgabe verstehe, sollst Du die Eulersche Funktion programmieren. Ein Beispiel für die Zahl 6: Du schaust nach, ob es für die Zahlen 1..5 einen gemeinsamen Teiler mit 6 gibt. Wenn es keinen gibt, dann sind die beiden Zahlen teilerfremd. Für alle teilerfremden Zahlen notierst Du einen -.
Also: 2, 3 und 4 haben einen gemeinsamen Teiler mit 6, bleiben also noch 1 und 5. Damit ist das Ergebnis 2 (Striche).
Überleg Dir das zuerst mal auf Papier. Wenn Du's auf Papier kapiert hast, ist die Umsetzung in C# kein Problem mehr.
 
  • Microsoft Visual C# 2005 Beitrag #15
H

Hexer1985

Bekanntes Mitglied
Dabei seit
07.02.2006
Beiträge
146
Reaktionspunkte
0
Ort
Stuttgart / Karlsruhe
Das mit dem Papier habe ich auch schon überlegt und hab mich auch drangesetzt aber ich find einfach den Einstieg in die Problematik nicht,kann mir jemand nen Tip geben? Ich hab mir mal folgendes überlegt:

Ich teile die eingegebene Zahl (zahl) durch meinen Zähler (zähler) -> zahl/zähler
Prüfe dann -> if (zahl%zähler!=0)
Dann muss ich wohl irgendwie prüfen, ob die Zahlen die dann in die IF-Schleife springen irgendeinen Teiler mit zahl haben, oder? Könnt ihr mir nen Lösungsansatz geben,wenn meiner falsch sein sollte? Wen man fragte, jeder sagt was anderes...
 
  • Microsoft Visual C# 2005 Beitrag #16
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Eigentlich war meine Erklärung schon sehr ausführlich.
Du brauchst 2 ineinanderverschachtelte Schleifen. Nochmal das Beispiel für die Zahl 6. Du mußt also die Zahlen von 1..5 testen, ob sie einen gemeinsamen Teiler mit 6 haben. Also hast Du damit schon mal die äußere Schleife.

Die nächste Frage ist: Wie stelle ich fest, ob es einen gemeinsamen Teiler gibt? Ganz einfach: Ich probiere einfach alles durch. Nehmen wir als Beispiel die 5. Also probiere ich, ob mit einer der Zahlen 2..5 als Divisor eine Division ohne Rest möglich ist. Einmal mit 5 und einmal mit 6 als Dividend. Falls nicht, dann sind 5 und 6 teilerfremd und Du notierst einen -.
 
Zuletzt bearbeitet:
  • Microsoft Visual C# 2005 Beitrag #17
H

Hexer1985

Bekanntes Mitglied
Dabei seit
07.02.2006
Beiträge
146
Reaktionspunkte
0
Ort
Stuttgart / Karlsruhe
Ich steh echt aufm Schlauch -.-

Bleiben wir beim Beispiel 6. Ich prüfe mit der ersten Schleife durch welche Zahlen Teiler von 6 sind also springen 2,3,4,6 in die nächste Schleife. Was muss ich jetzt überprüfen, bei 6 bin ich ja jetzt am Ende, aber wenn ich jetzt 20 nehm dann fehltn Schritt und den kann ich im Kopf momentan noch nicht nachvollziehen. Oder ist die Schleife in der Schleife keine IF-Schleife sondern ne FOR/WHILE-Schleife,die alle restlichen Zahlen irgendwie teilt?
 
  • Microsoft Visual C# 2005 Beitrag #18
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Welche Art Schleife Du nimmst, ist ziemlich egal. Aber eine IF-Schleife gibt's nicht ;-)

Nochmal in Pseudocode:

Code:
Eingabe: z = 6

schleife1 i = [1 .. z-1]
   schleife2 j = [2 .. i]
      wenn j teiler von i UND j teiler von z, dann haben i und z den gemeinsamen Teiler j
   wenn kein gemeinsamer teiler gefunden wurde, sind i und z teilerfremd => Strich machen
 
  • Microsoft Visual C# 2005 Beitrag #19
H

Hexer1985

Bekanntes Mitglied
Dabei seit
07.02.2006
Beiträge
146
Reaktionspunkte
0
Ort
Stuttgart / Karlsruhe
Ich leg mal heut abend nochmal nen Lösungsvorschlag vor, wäre nett wenn du den dann nochmal anschauen und mich beraten könntest denn am Freitag ist Abgabe.
 
  • Microsoft Visual C# 2005 Beitrag #20
H

Hexer1985

Bekanntes Mitglied
Dabei seit
07.02.2006
Beiträge
146
Reaktionspunkte
0
Ort
Stuttgart / Karlsruhe
So irgendwo ist noch der Wurm drin. Also bei i hab ichs umgedreht auf i-- weil wenn ich von 1 bis (zahl -1) laufe, dann springt 2 in die zweite for-schleife und j<i ist erfüllt, oder? Den weiteren Fehler find ich net :(


using System;

class App
{
static void Main()
{
Console.WriteLine("Geben sie bitte eine positive Zahl ein:");
int zahl = Convert.ToInt32(Console.ReadLine());

for (int i = (zahl - 1); i > 1; i--)
{
for (int j = 2; j < i; j++)
{
if (j % i != 0 || j % zahl != 0)
{
Console.WriteLine("-");
}
/*else
{
Console.WriteLine("-");
}*/
Console.ReadLine();
}

}
}

}
 
Thema:

Microsoft Visual C# 2005

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben