Avatar billede Slettet bruger
07. maj 2002 - 22:33 Der er 21 kommentarer og
1 løsning

algoritme

Kan nogle forklare mig om hvordan jeg udvikler min egen algorithme. Den skal kunne gemme to ting.

jeg kan godt finde ud af at bruge xor og de andre alm men ikke shr shl jeg tror de hedder sådan - har ikke helt fattet hvad de går ud på. også eksempler her tak.

Evt. nogle toturials eller nogle gode eksempler hvordan i kom frem til en algorithme.
Avatar billede hermandsen Juniormester
07. maj 2002 - 22:48 #1
En algoritme er bare en matematisk løsning på et problem... Den skal du selv lave, afhængig af hvad den skal bruges til!

Hvad skal du f.eks. bruge din til?
Avatar billede jekk Nybegynder
07. maj 2002 - 22:59 #2
for mig at se, er algoritme et sæt trin/step, der fører frem til et resultat - det behøver ikke nødvendigvis være baseret på matematik !
et af de første højniveau programmeringssprog
ALGOL kunne mere end matematik...
Avatar billede jekk Nybegynder
07. maj 2002 - 23:00 #3
således er procedurer og functioner og andet med en begin/end struktur algoritmer...
Avatar billede jekk Nybegynder
07. maj 2002 - 23:02 #4
og er man dus med APL, så ser det straks helt anderledes ud inkl. keybordet...
Avatar billede hermandsen Juniormester
07. maj 2002 - 23:14 #5
>>jekk
Alt i en computer er matematik! ;) Men, ej du har ret... En algoritme kan også være en række af procedurere og funktioner... Dog skal man vide hvad algoritmen skal bruges til!!! :)
Avatar billede jekk Nybegynder
07. maj 2002 - 23:19 #6
ENIG !
Avatar billede jespernaur Nybegynder
08. maj 2002 - 00:41 #7
En algoritme er en trin for trin beskrivelse af, hvorledes et givet problem kan løses.
Et helt trivielt eksempel, der intet har med computere at gøre:

Problem: Vi ønsker at fremstille en bestemt ret mad.
Løsning: Opskriften slås op i en kogebog. En opskrift er en algoritme, i og med at
der typisk står:

Man tager
ingrediens 1
ingrediens 2
...
Gør dit
Gør dat
Gør dette
Gør hint
...

Hvis man følger dette trin for trin, vil man normalt ved afslutningen kunne gå
til bords til en velsmagende ret.

Et mere computer-relateret problem:

Tre variable:

tal1, tal2 og tal3

ønskes sorteret i stigende rækkefølge.

Eksempel på løsning, der benyttes en C-lignende dialekt:

if (tal1 < tal2) {
  if (tal2 < tal3) {
      // rækkefølge tal1 tal2 tal3
  }
  else {
      if (tal1 < tal3) {
        // rækkefølge tal1 tal3 tal2
      }
      else {
        // rækkefølge tal3 tal1 tal2
      }
  }
}
else {
  if (tal1 < tal3) {
      // rækkefølge tal2 tal1 tal3
  }
  else {
      if (tal2 < tal3) {
        // rækkefølge tal2 tal3 tal1
      }
      else {
        // rækkefølge tal3 tal2 tal1
      }
  }
}

Ovenstående er et eksempel på en sorterings-algoritme, skræddersyet til at kunne
sortere 3 tal.

Det vigtige i begge ovenstående eksempler er, at før man overhovedet begynder at tænke
på en algoritme, skal man gøre sig klart, hvilket problem man ønsker at løse.

Det er også vigtigt at gøre sig klart, at de fleste problemer kan løses med flere forskellige metoder, i nogle tilfælde måske lige gode, men i andre tilfælde vil visse metoder være andre metoder meget overlegne.

Mvh
Jesper Naur
Avatar billede doc404 Novice
08. maj 2002 - 01:19 #8
shr/shl kan du meget groft opfatte som dette:

shr (shift right) dividere et heltal med 2
shl (shift left) ganger et heltal med 2

Det er det man kalder en bitwise shift operation.

Reelt sker der det at alle bit'sne rykkes hhv. 1 plads til højre/venstre.

Eks:
du har en integer variabel x = 17. Binært er det 10001

x shl 1 vil give 10010 binært, hvilket er 34 decimalt
x shr 1 vil give 1001 binært, hvilket er 8 decimalt

Du kan finde laaange forklaringer på dette via Google
Avatar billede doc404 Novice
08. maj 2002 - 01:22 #9
ups...

x shl 1 vil give 100010 binært, hvilket er 34 decimalt...
x shr 1 vil give 1000 binært, hvilket er 8 decimalt..

Og så fik du også et glimrende eksempel på hvorfor man ikke skriver binært...man glemmer hurtigt et nul ;-)
Avatar billede jespernaur Nybegynder
08. maj 2002 - 01:22 #10
Der er da vist smuttet bit i begge retninger:

10001 shl 1 = 100010
10001 shr 1 = 1000
Avatar billede doc404 Novice
08. maj 2002 - 01:26 #11
der findes tre slags mennesker. Dem der kan tælle og dem der ikke kan....

undertegnede høre til den sidste
Avatar billede jespernaur Nybegynder
08. maj 2002 - 01:28 #12
OK - en to -- MANGE!!!
Avatar billede Slettet bruger
08. maj 2002 - 16:36 #13
Jeg er godt klar over hvad en algorithme er, jeg kan se det kræver et mere specifikt eksempel.

Jeg vil evaluere en streng på min 4 op til 20 tegn, den skal retunere en struktur af 4tal-4tal-4tal-2tal f.eks. 1234-4312-5674-03 hvordan skal jeg lave en algorithme til den, jeg skal også kunne få den tilbage til oprindelig form.

Jeg har forstået hvad en algorithme er men vil lære hvordan man designer algorithmer som kan gå begge veje ( 123 -> 321 og 321 -> 123 )
Avatar billede hermandsen Juniormester
08. maj 2002 - 16:48 #14
Regn baglænds... Det kommer altså meget an på hvad din algoritme skal bruges til...

F.eks.
y = 15x^2-7

Det modsatte vil være:

x = ((y+7)/15)^(1/2)

Hvis vi så tager dit strenge eksempel, så er det igen at se på hvordan kommer jeg fra resultatet, tilbage til min start-værdi. Jeg vil samtidig sige at du får ikke en bedre forklaring, med mindre du kan fortælle præcist hvad det er for en algoritme.

En algoritme til at vende en hvilken som helst algoritme om... Umuligt!
Avatar billede stoney Nybegynder
08. maj 2002 - 16:50 #15
Hvis du bare vil "vende" en værdi

procedure TForm1.Button1Click(Sender: TObject);
var
  Txt : string;
  i : integer;
begin
edit2.Clear;


  for i:=Length(edit1.Text) downto 1  do
    edit2.text := edit2.text + edit1.Text[i];

end;

Stoney
Avatar billede Slettet bruger
08. maj 2002 - 16:59 #16
Start med bare at forklare hvordan jeg designer en algorithme til at lave den 4tal-4tal-4tal-2tal ud fra en given streng som jeg har og er min. 4 og max 20 tegn. Den algoprithme jeg får lavet til det formål skal kunne lave 4tal-4tal-4tal-2tal om til den originale streng igen.
Avatar billede hermandsen Juniormester
08. maj 2002 - 17:11 #17
var
  S1, S2: String;
begin
  S1 := '12423512329020';
  for I := 1 to Length(S1) do
  begin
    S2 := S2 + S1[I];
    if I >= 4+4+4+1 then
      Continue;
    if I mod 4 = 0 then
      S2 := S2 + '-';
  end;
end;

Det er utestet, så hvis der er et problem, så skriv lige!
Avatar billede hermandsen Juniormester
08. maj 2002 - 17:14 #18
Upser, der skulle selvfølgelig lige være en I-variabel i starten! :)

var
  S1, S2: String;
  I: Integer;
begin
  for I := 1 to 20 do
    S1 := S1 + Char(Random(10)+48);

  for I := 1 to Length(S1) do
  begin
    S2 := S2 + S1[I];
    if I >= 4+4+4+1 then
      Continue;
    if I mod 4 = 0 then
      S2 := S2 + '-';
  end;
end;

Stadig utestet, men prøv en gang...
Avatar billede Slettet bruger
08. maj 2002 - 20:01 #19
Jeg ville ikke bare skille en string med "-" men først lave den om til en tal streng som en slags kryptering. Det behøver ikke at være den syge kryptering men blot en omdannelse til en tal adskilt af - som nævnt før. F.eks. Jeg spiser bliver til 1232-1245-2312-12
Avatar billede hermandsen Juniormester
08. maj 2002 - 20:17 #20
Du må f***** snart fortælle hvad du vil!!! Du laver et eksempel og beder om at man kommer med en løsning... Det gør man, og så ber du om så siger du at det ikke lige var det... Beklager, men jeg er sgu lidt pissed nu!

Kom med en præcis forklaring på hvad du vil, og hvordan du vil have det løst. Du kommer med noget som ikke lige er helt som det skal være, og så siger du selv at det er forkert... Hvorfor mon det er forkert? Fordi din forklaring er upræcis...

Såh... Nu er jeg vist af med mine aggrationer! :)

Hvis du vil kryptere en streng, kan du f.eks. gøre det med den berømte Cæsar-kryptering. Gå 1 eller 2 bogstaver frem i alfabetet! Det holdte folk ude af min dagbog ret længe!!! ;)

function Hest(S: String): String;
var
  I: Integer;
begin
  for I := 0 to Length(S) do
    Result := Result + Char(Ord(S[I])+1);
end;

Beklager min sure indstilling i starten... Har dog ikke slettet den da jeg syntes du skal prøve at komme med en præcis forklaring på dit problem! Stick to the problem, everything else is irrelevant!

//hermandsen
Avatar billede Slettet bruger
09. maj 2002 - 12:12 #21
LKæg mærke til at jeg skrev

"Jeg vil evaluere en streng på min 4 op til 20 tegn, den skal retunere en struktur af 4tal-4tal-4tal-2tal f.eks. 1234-4312-5674-03 hvordan skal jeg lave en algorithme til den, jeg skal også kunne få den tilbage til oprindelig form.
"

jeg vil mene at det blev forklaret ordentligt men du glemte lige at læse det, jeg nævnte det bare igen i en senere kommentar da jeg ikke fik de løsninger som jeg skulle bruge.

Men ok jeg ved det er Sk*** svært at forklare så det er vel fair nok at i bliver lidt sure.

men tak for svaret, dog havde jeg forventet en lidt sværre metode måske, men hvis igen kommer med en bedre så må jeg heller smide de point af til nogen - så er det vel mig som ikke kan forklare mig =)

hermandsen du kan lige skrive noget i et svar så kan jeg godtage dit svar med den cæsar kryptering hvis igen andre finder på noget bedre MEGET snart
Avatar billede hermandsen Juniormester
09. maj 2002 - 13:20 #22
Ellers så kig lidt her:
http://www.borrisholt.com/Algorithmic/Algorithmic_MAIN.htm

Der kan du finde noget om kryptering! Eller led lidt på www.torry.net der er garanteret også en masse eksempler, komponenter og jeg ved ikke hvad... :)

//hermandsen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester