program potegujący liczby (nauka c)

0

Program 1

 #include<stdio.h>
int main()
{
    int podstawa, potega, i, wynik;
    printf("podaj podstawe\n");
    scanf("%d", &podstawa);
    printf("podaj potega\n");
    scanf("%d", &potega);
    wynik=1;
    for(i=1;i<=potega;i++)
    wynik=wynik*podstawa;
    printf("potega wynosi %d", wynik);
    return(0);
}

Program 2

#include <stdio.h>
int func(unsigned int podstawa, unsigned int potega)
{
    int wynik, i;
    wynik=1;
    for(i=1;1<=potega;i++)
    wynik=wynik*podstawa;
    return wynik;
}
int main()
{
    int pod, pot;
    printf("podaj podstawe\n");
    scanf("%d", &pod);
    printf("podaj potega\n");
    scanf("%d", &pot);
    printf("potega wynosi %d", func(pod, pot));
    return(0);
}

Napisałem program potęgujący liczby program 1, gdy to mi się udało chciałem nauczyć się deklaracji funkcji więc napisałem program 2 dlaczego nie działa tak jak należy? proszę o pomoc

0
for(i=1; 1<=potega; i++)

Przypatruj się tej linijce aż do skutku (hint: warunek).

0
#include <stdio.h>

int func(unsigned int podstawa, unsigned int potega)
{
    int wynik, i;
    wynik=1;
    for(i=1;i<=potega;i++)
    wynik=wynik*podstawa;
    return wynik;
}

int main()
{
    int pod, pot;
    printf("podaj podstawe\n");
    scanf("%d", &pod);
    printf("podaj potega\n");
    scanf("%d", &pot);
    printf("potega wynosi %d", func(pod, pot));
    return(0);
}
0

Zauważ że czasami malutki trik pozwala znacznie przyspieszyć obliczenia:

#include <stdio.h>
 
int func(int podstawa, unsigned int potega)
  {
   int wynik=1;
   while(potega)
     {
      if(potega&1) wynik*=podstawa;
      podstawa*=podstawa;
      potega>>=1;
     }
   return wynik;
  }
 
int main()
  {
   int pod;
   unsigned pot;
   printf("podaj podstawe: ");
   scanf("%d",&pod);
   printf("podaj potege: ");
   scanf("%u",&pot);
   printf("potega wynosi %d",func(pod, pot));
   return(0);
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1