इस स्यूडोकोड के उत्पादन में क्या है?

वोट
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 अस्थायी के लिए नए मूल्य के बजाय हर बार प्रतिस्थापन रहते हैं,।

संपादित करें: यहाँ मेरा काम है:

{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

वहाँ एक कारण लोगों अजगर "निष्पादन योग्य स्यूडोकोड" कहा जाता है है:

>>> 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 के एक जवाब मिला है।

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 है:

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 से गुणा कर रहे हैं, नहीं अस्थायी (जो जे पाश के बाद पी के अंतिम मूल्य तक बढ़ जाती है)।
  • आप आगमन के लिए [i], नहीं पी अस्थायी स्थापित कर रहे हैं, अपने 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

सी में:

#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। ध्यान दें कि ऊपर अपने छद्म कोड से बहुत वर्बोज़ है - यह कई मायनों में सरल किया जा सकता है।

मैं प्रयोग किया जाता है टिनी सी संकलक बहुत छोटी, हल्के, और इस तरह सरल सामान के लिए उपयोग करने के लिए आसान -।

-Adam

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