Ποια είναι η έξοδος του ψευδοκώδικα;

ψήφοι
1
procedure DoSomething(a_1, ... a_n)
 p = a_1
 for i = 2 to n
  temp = p
  for j = 1 to a_i
   p = p * temp

DoSomething(10,2,2,2)

Είμαστε πάρει ανάμεικτα αποτελέσματα. Ένας από μας πήρε 10 ^ 7, το άλλο 10 ^ 27.

Νομίζω ότι βρήκα το λάθος μου ... Κρατάω αντικαθιστώντας 10 για p κάθε φορά, αντί για την νέα τιμή για temp.

EDIT: Εδώ είναι η δουλειά μου:

{10, 2, 2, 2}
p = 10
i = 2 to 4
 temp = p = 10
 j = 1 to 2
  p = 10 * 10 = 10^2
  p = 10^2 * 10 = 10^3
i = 3 to 4
 temp = 10^3
 j = 1 to 2
  p = 10^3 * 10 = 10^4
  p = 10^4 * 10 = 10^5
i = 4 to 4
 temp = 10^5
 j = 1 to 2
  p = 10^5 * 10 = 10^6
  p = 10^6 * 10 = 10^7

10 ^ 7

Δημοσιεύθηκε 30/01/2009 στις 07:21
πηγή χρήστη
Σε άλλες γλώσσες...                            


7 απαντήσεις

ψήφοι
0

Υπάρχει ένας λόγος που οι λαοί έχουν καλέσει Python «εκτελέσιμο ψευδοκώδικα»:

>>> def doSomething(*args):
...     args = list(args);
...     p = args.pop(0)
...     for i in range(len(args)):
...         temp = p
...         for j in range(args[i]):
...           p *= temp
...     return p
...
>>> print doSomething(10,2,2,2)
1000000000000000000000000000
Απαντήθηκε 30/01/2009 στις 07:39
πηγή χρήστη

ψήφοι
2

Μπήκα στο πρόγραμμα στο μου TI-89 και πήρε μια απάντηση από 1e27 για την τιμή του p.

t(a)
Func
  Local i,j,p,tmp
  a[1]->p
  For i,2,dim(a)
    p->tmp
    For j,1,a[i]
      p*tmp->p
    EndFor
  EndFor
  Return p
EndFunc

t({10,2,2,2})       1.E27
Απαντήθηκε 30/01/2009 στις 07:42
πηγή χρήστη

ψήφοι
1

Δεν είναι ((10 ^ 3) ^ 4) ^ 5 = 10 ^ 60;

Απαντήθηκε 30/01/2009 στις 07:46
πηγή χρήστη

ψήφοι
5

Είναι 10 ^ 27, όπως φαίνεται από αυτό το κομμάτι του κώδικα python:

a = [10,2,2,2]
p = a[0]
for i in range(1,len(a)):
    temp = p
    for j in range(a[i]):
        p *= temp
print p

1.000.000.000.000.000.000.000.000.000

Τα προβλήματα με τον κωδικό σας, όπως δημοσιεύονται αποτελούν:

  • σε 10 ^ 7 λύση σας, είστε πάντα πολλαπλασιάζοντας με το 10, δεν θερμοκρασία (που αυξάνεται με την τελική τιμή του p μετά την ι βρόχο).
  • Είσαι τη θερμοκρασία να arr [i], δεν p, στον κώδικα της PHP σας (το οποίο θα περιλαμβάνει εδώ, ώστε η απάντησή μου εξακολουθεί να έχει νόημα, αφού το επεξεργαστεί από την ερώτησή σας :-).

    $arr = array(10, 2, 2, 2);
    $p = $arr[0];
    $temp = 0;
    for($i = 1; $i <= 3; $i++)
    {
        $temp = $arr[$i];
        for($j = 0; $j <= $arr[$i]; $j++)
        {
            $p = $p * $temp;
        }
    }
    echo $p;
    
Απαντήθηκε 30/01/2009 στις 07:50
πηγή χρήστη

ψήφοι
0

Στην C:

#include <stdio.h>

double DoSomething(double array[], int count)
{
  double p, temp;
  int i, j;

  p = array[0];

  for(i=1;i<count;i++)
  {
    temp = p;
    for(j=0; j<array[i];j++)
    {
      printf("p=%g, temp=%g\n", p, temp); /* useful to see what's going on */
      p = p * temp;
    }
  }
  return p; /* this isn't specified, but I assume it's the procedure output */
}

double array[4] = {10.0,2.0,2.0,2.0};

int main(void)
{
  printf("%g\n", DoSomething(array, 4));
  return 0;
}

Και, όπως και άλλοι έχουν δηλώσει, 10e27. Σημειώστε ότι τα παραπάνω είναι πολύ φλύαρη από τον κωδικό ψευδο σας - θα μπορούσε να απλοποιηθεί με πολλούς τρόπους.

Θα χρησιμοποιηθεί το Tiny Compiler Γ - πολύ μικρό, ελαφρύ και εύκολο στη χρήση για απλά πράγματα όπως αυτό.

-Αδάμ

Απαντήθηκε 30/01/2009 στις 07:53
πηγή χρήστη

ψήφοι
1

Φαίνεται να είναι μια συνάρτηση για τον υπολογισμό


(((a_1^(a_2+1))^(a_3+1))^(a_4+1)...

Έτσι παίρνουμε ((10 ^ 3) ^ 3) ^ 3 = 10 ^ (3 ^ 3) = 10 ^ 27

Απαντήθηκε 30/01/2009 στις 07:56
πηγή χρήστη

ψήφοι
1

Υπάρχει ένα λάθος στον υπολογισμό για 10 ^ 7, βλέπε παρακάτω. Η σωστή απάντηση είναι 10 ^ 27 {10, 2, 2, 2}

p = 10
i = 2 to 4
 temp = p = 10
 j = 1 to 2
  p = 10 * 10 = 10^2
  p = 10^2 * 10 = 10^3
i = 3 to 4
 temp = 10^3
 j = 1 to 2
  p = 10^3 * 10 = 10^4 -- p=p*temp, p=10^3 and temp=10^3, hence p=10^3 * 10^3.
  p = 10^4 * 10 = 10^5 -- Similarly for other steps.
i = 4 to 4
 temp = 10^5
 j = 1 to 2
  p = 10^5 * 10 = 10^6
  p = 10^6 * 10 = 10^7
Απαντήθηκε 30/01/2009 στις 07:59
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more