[Delphi] Kan dit ?

Pagina: 1
Acties:

  • RSP
  • Registratie: Juni 2001
  • Laatst online: 24-06 10:36
voorbeeld van antwoord :

AantalKeer("een voorbeeld zin","een")=1
Aantalkeer("appel","p")=2

en dit is m'n code :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function aantalkeer(const str, substr:string): Integer;

var 
i : integer;
aantal, gelijk : string;

begin
    for i := 1 to length(str)-length(substr) do
begin
    gelijk := copy(str, i, length(substr));
        if gelijk = substr then
            INC(aantal)
        else 
        ;
end

result := aantal;

end;

Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function aantalkeer(const str, substr:string): Integer;

var 
i : integer;
aantal, gelijk : string;

begin
aantal:=0;
 for i := 1 to (length(str)-length(substr)) do
   begin
    gelijk := copy(str, i, length(substr));
    if gelijk = substr then INC(aantal);
   end;
result := aantal;

end;

zo zou die t volgens mij moeten doen? :)

  • RSP
  • Registratie: Juni 2001
  • Laatst online: 24-06 10:36
Op donderdag 29 november 2001 21:39 schreef qball het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function aantalkeer(const str, substr:string): Integer;

var 
i : integer;
aantal, gelijk : string;

begin
aantal:=0;
 for i := 1 to (length(str)-length(substr)) do
   begin
    gelijk := copy(str, i, length(substr));
    if gelijk = substr then INC(aantal);
   end;
result := aantal;

end;

zo zou die t volgens mij moeten doen? :)
op 'n paar schoonheidspuntjes na nix a/d hand dus :) mooi dank u :) heb ik nog 'n probleem *jaja ik ben 'n zeikerd*
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Const N=100;
Type Rij = Array[1..N] of integer;

procedure Zeef(const waarde : integer; var getallen: Rij);
var
tijdelijk : integer;
new : array[1..N] of integer;

begin

for i := 1 to N do
    tijdelijk := Getallen[i]
        if tijdelijk mod waarde = 0 then
        ..
        else
        ..
end;

je geeft 'n getal op, dat getal wordt vergeleken met alle waarden uit de array, als de waarde i van de array gelijk of deelbaar is door het getal dan moet ie uit de array gehaald worden,

wat ik wilde doen :
als een waarde uit de array overbluift *dus niet deelbaar of gelijk aan getal* deze plaatsen in een nieuwe array
(new : array[1..N] of integer;)
maar hoe doe ik dat toevoegen ??

  • Juicy
  • Registratie: December 2000
  • Nu online
Waarom maak je je huiswerk niet zelf ? >:)

-


  • RSP
  • Registratie: Juni 2001
  • Laatst online: 24-06 10:36
omdat ik er ff niet uitkom :/
zou je dankbaar zijn als je me kon vertellen hoe ik het kan oplossen

  • Onno
  • Registratie: Juni 1999
  • Niet online
Hmm.. met priemgetallen bezig? :)
Op donderdag 29 november 2001 21:53 schreef RSP het volgende:
als de waarde i van de array gelijk of deelbaar is door het getal dan moet ie uit de array gehaald worden,
i is in jouw stukje code de index, en die kun je dus niet uit een array halen. Je kunt hooguit de waarde die bij die index hoort aanpassen.

Geef dus iets duidelijk aan wat je wilt doen.

  • RSP
  • Registratie: Juni 2001
  • Laatst online: 24-06 10:36
Op donderdag 29 november 2001 21:57 schreef Onno het volgende:
Hmm.. met priemgetallen bezig? :)
[..]

i is in jouw stukje code de index, en die kun je dus niet uit een array halen. Je kunt hooguit de waarde die bij die index hoort aanpassen.

Geef dus iets duidelijk aan wat je wilt doen.
de waarde die ik wil dus wil aanpassen *MITS die waarde deelbaar is door het opgegeven getal* is dus Getallen[i]
die komt dus uit deze rij :
procedure Zeef(const waarde : integer; var getallen: Rij);

Verwijderd

Volgens mij bedoel je als a[i] deelbaar is door een getal x dan moet die blijven, als dat niet het geval is, dan moet die waarden naar een Array new.

Dat kun je doen door:

var k: integer;

Begin

k:=0;

for i:= 0 to N do
begin
if a[i] mod x <> 0 then
begin
new[k]:= x;
k:= k+1;
a[i]:=0; //om de waarde op 0 te zetten,
//omdat die niet deelbaar door x was.
end;
end;
in array new staan alle getallen niet deelbaar door x, in
a zijn alle getallen die ongelijk aan 0 zijn deelbaar door x. Je zou natuurlijk ook 2 arrays bij kunnen houden (deelbaar/ondeelbaar) en de meegegeven array a, in tact laten.

  • RSP
  • Registratie: Juni 2001
  • Laatst online: 24-06 10:36
Op donderdag 29 november 2001 22:12 schreef JoKapital het volgende:
Volgens mij bedoel je als a[i] deelbaar is door een getal x dan moet die blijven, als dat niet het geval is, dan moet die waarden naar een Array new.

Dat kun je doen door:

var k: integer;

Begin

k:=0;

for i:= 0 to N do
begin
if a[i] mod x <> 0 then
begin
new[k]:= x;
k:= k+1;
a[i]:=0; //om de waarde op 0 te zetten,
//omdat die niet deelbaar door x was.
end;
end;

in array new staan alle getallen niet deelbaar door x, in
a zijn alle getallen die ongelijk aan 0 zijn deelbaar door x. Je zou natuurlijk ook 2 arrays bij kunnen houden (deelbaar/ondeelbaar) en de meegegeven array a, in tact laten.
thx :)

't was net niet helemaal wat ik bedoelde
maar met new[k] en INC(k) ben ik d'r uit gekomen :D


dank voor de genomen moeite allen :)

Verwijderd

Ooh ja, in je functie Aantalkeer zit nog een stomme fout.

De functie Aantalkeer retourneert in de specificatie een integer waarde.
Echter variabele aantal heb je als String gedeclareerd.
Result:=String; kan dan nooit goed zijn, een assignment van een stringwaarde aan een integervariabele is niet toegestaan.

  • RSP
  • Registratie: Juni 2001
  • Laatst online: 24-06 10:36
Op donderdag 29 november 2001 22:18 schreef JoKapital het volgende:
Ooh ja, in je functie Aantalkeer zit nog een stomme fout.

De functie Aantalkeer retourneert in de specificatie een integer waarde.
Echter variabele aantal heb je als String gedeclareerd.
Result:=String; kan dan nooit goed zijn, een assignment van een stringwaarde aan een integervariabele is niet toegestaan.
die had ik inmiddels ook al gevonden :) toch ff bedankt :D

Verwijderd

Ooh ja, en nog iets, was ik vergeten te zeggen.

In die functie Aantalkeer zit een geniepige fout.

for i := 1 to length(str) -length(substr) do

omdat de functie copy vanaf de waarde i start gaat het op het laatste stuk string fout.

Voorbeeld: 'zomaar' met testen op aantal keer 'r' zal 0 geven omdat die maar bij length(zomaar) - lenght('r') zal beginnen, dus bij de 2e 'a' en dat een een karakter, dus alleen de a.

Op te lossen door 1 op te tellen bij length str:

for i := 1 to length(str) + 1 -length(substr) do
en dan zal het werken.

i.v.m. efficientie zou ik het als volgt coderen (scheelt in geheugengebruik en snelheid):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function AantalKeer(const str, substr:string): Integer;

var

 i,aantal : integer;
 gelijk : string;

begin
  aantal:=0;
  for i := 1 to length(str) + 1 -length(substr) do
    if substr = copy(str, i, length(substr)) then
        aantal:= aantal +1;
  result := aantal;
end;

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 23:21

mulder

ik spuug op het trottoir

Hallo, we hebben toch ook de Pos functie in Delphi?

oogjes open, snaveltjes dicht

Pagina: 1