Autor Beitrag
ridderle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Do 22.05.08 22:32 
ja, das ist eben mein Problem, woran ich scheitere...

Bisher kann ich ja einen bzw. mehrere Buchstaben löschen, aber sobald ein Buchstabe gelöscht wird, schneidet der Compiler den Rest auch ab...
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 22.05.08 22:54 
user profile iconridderle hat folgendes geschrieben:
ja, das ist eben mein Problem, woran ich scheitere...
Dann zeig doch mal, wie weit du bist oder sag einfach genauer, wo es hakt :nixweiss: . Wie gesagt, nimm deinen funktionierenden Code aus dem verlinkten Posting und bau darum einfach eine Schleife, die ihn nacheinander für jeden zu löschenden Buchstaben aufruft.
Ich habe mir jetzt erst qwertz's Code genauer angesehen und kann dir eigentlich nur raten: Vergiss ihn schnell wieder. Schon allein, weil dein Lehrer mit einem Split nicht zufrieden sein wird, wie du schon selbst gesagt hast.
ridderle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Fr 23.05.08 12:26 
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
using System;
using System.Collections.Generic;
using System.Text;

namespace Hausaufgaben_2
{
    class Program
    {

        public static string BuchstabenLöschen(string satz, string löschen)
        {
            string weg = " ";
            for (int no = 0; no < s1.length; no++)
            {
                if (satz[no] != löschen)
                {
                    satz[no] = satz[no] + weg;
                }
            }

            return satz;
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Buchstaben löschen");
            Console.WriteLine("Geben Sie einen Satz ein");
            string satz = Console.ReadLine();

            Console.WriteLine("Welchen Buchstaben möchten Sie löschen?");
            string löschen = Console.ReadLine();

            Console.WriteLine(BuchstabenLöschen(satz, löschen));

            Console.ReadKey();
        }
    }
}


So habe nun nochmal das ganze versucht zu überarbeiten...
Man sagt ja, wenn man es auf Deutsch sagen kann, könnte man es auch programmieren:

Wenn der String "satz" buchstaben von "löschen" enthält, dann setze an den String "satz" an der Stelle, wo sich der Buchstabe von "löschen" befindet die variable string weg ein, die Leerzeichen beinhaltet.

Jetzt weiß ich aber nicht, wie ich den String text, in einzelne Buchstaben zerlegen kann, dass es mir jeden Buchstaben durchgeht und vergleicht, ob es die Buchstaben enthält, die auch "löschen" enthält.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 23.05.08 15:18 
user profile iconridderle hat folgendes geschrieben:
Jetzt weiß ich aber nicht, wie ich den String text, in einzelne Buchstaben zerlegen kann, dass es mir jeden Buchstaben durchgeht und vergleicht, ob es die Buchstaben enthält, die auch "löschen" enthält.
Wie man einen String durchgeht, hast du doch schon an "satz" gezeigt? Du musst jetzt nur noch die zwei Schleifen beliebig schachteln:
Entweder führst du für jedes Zeichen in "löschen" deine alte Methode, die ein einziges Zeichen löscht, aus,
oder du schaust innerhalb deiner bisherigen Schleife, ob "satz[no]" mit irgendeinem Char aus "löschen" übereinstimmt.

PS: Über die Stelle
Zitat:
[...], dann setze an den String "satz" an der Stelle, wo sich der Buchstabe von "löschen" befindet die variable string weg ein
solltest du dir auch noch Gedanken machen, denn in deinem Code ist keine Ersetzung zu erkennen.
ridderle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Fr 23.05.08 15:42 
ich kann doch keinen string mit char vergleichen?!
jedenfalls bekomme ich da immer einen Fehler
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 23.05.08 17:27 
user profile iconridderle hat folgendes geschrieben:
ich kann doch keinen string mit char vergleichen?!
Natürlich nicht. Hat auch niemand behauptet :P .

Und jetzt gebe ich dir erst einmal 24h zum Nachdenken :P ² .
ridderle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Sa 24.05.08 13:53 
ja ein String ist ja quasi ein Array von Chars?
Das heisst, dass ich den String bzw eigentlich beide Strings als Char Array umwandeln muss?

Anders würde es für mich nun kein Sinn machen.
Aber wie das umwandeln geht, steht mir auch in den Sternen
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Sa 24.05.08 15:03 
user profile iconridderle hat folgendes geschrieben:
ja ein String ist ja quasi ein Array von Chars?
Das heisst, dass ich den String bzw eigentlich beide Strings als Char Array umwandeln muss?

Verd... nochmal, bist Du so blöd, oder tust Du nur so? Ein String ist nicht "quasi" ein Array von Chars, sondern das ist er wirklich!* Jedes einzelne Element ist ein Char, und ein solch einzelnes Element kannst Du doch mit einem Char direkt vergleichen! Das hast Du doch auch schon gemacht! Umwandeln ist also völlig überflüssig; Du musst nur alle Chars der beiden Strings einzeln behandeln.

Ist es denn so schwer, diesen Vorschlag zu verwirklichen?
user profile iconKhabarakh hat folgendes geschrieben:
Du musst jetzt nur noch die zwei Schleifen beliebig schachteln:
Entweder führst du für jedes Zeichen in "löschen" deine alte Methode, die ein einziges Zeichen löscht, aus,
oder du schaust innerhalb deiner bisherigen Schleife, ob "satz[no]" mit irgendeinem Char aus "löschen" übereinstimmt.


Jürgen

PS. Es ist mir bewusst, dass ich einen Rüffel von einem Moderator bekomme und verdient habe. Wenn ich aber dieses ständige Unverständnis lese, werde ich meinem Vorsatz untreu (mich hier nicht mehr mit Hilfe zu beteiligen) und werde entgegen meiner Gewohnheit unhöflich.

* Nachtrag als "technische" Korrektur: Der String als solcher ist natürlich ein eigenständiger Typ, abgeleitet von object. Aber als Liste der Zeichen kann er wie vom Typ Char[] behandelt werden - wie ja auch geschehen.
ridderle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: So 25.05.08 12:07 
ich habe in dem Methodenkopf einen String...
Das Problem ist nun eher, wie ich dann von dem String die Buchstaben vergleiche bzw. von den Chars.

Also der Code...