Potęgowanie liczb

0

Cześć mam mały problem z zadankami; oba dałem radę zrobić, lecz nie umiem z postawionymi warunkami :(

1 zadanie
muszę wypisać potęgi 10 w zakresie 0-19, z jednym printf i jedną parą nawiasów klamrowych. Nie mogę użyć pow()

#include <stdio.h>
#include <math.h>
int main(void) 
{
int i;
  for(i=0;i<=19;i++)
  
    printf("%.0f\n",pow(10,i));
  
return 0;
}

2 zadanie
wartości z powyższego zadania muszę wypisać tak oby cyfry jedności były pod sobą, tylko jeden printf
Udało mi się za pomocą dwóch printfów, a jak robię jednym to od potęgi 10-19 rozdzeżdzają mi się o jedno miesjce do tyłu

#include <stdio.h>
#include <math.h>
int main(void) 
{
int i,j;
  for(i=0;i<=9;i++)
  {
  
    printf("10 do potęgi %d =%22.0f\n",i,pow(10,i));
  }
  for(j=10;j<=19;j++)
  {
    printf("10 do potęgi %d =%21.0f\n",i,pow(10,j));
  }
  
return 0;
}
6

Ad 1
Hasło "c repeat chars"
Wynik: https://stackoverflow.com/a/16713553
Rozwiązanie:

#include <stdio.h>
#include <math.h>
int main(void) 
{
  int i;
  
  for(i=0;i<=19;i++)
    (!i ? printf("1\n") : printf("1%0*d\n",i, 0));

  return 0;
}

https://ideone.com/nrON2l

2

Wg nie trochę prściej

#include <stdio.h>
#include <math.h>
int main(void) 
{
  int i;
  for(i=0;i<=19;++i) printf(!i?"1\n":"1%0*d\n",i, 0);
  return 0;
}
0

dzięki, a macie jakiś pomysł na zadanie 2 , ja już dzisiaj spędziłem na tym kolejne kilka godzin i już wymiękam

0

Na tej samej zasadzie

0

teraz spróbowałem takie coś i od 10 potęgi jedności się rozjeżdzają :(

#include <stdio.h>
#include <math.h>
int main(void) 
{
int i,j;
  for(i=0;i<=19;i++)
  {
    printf("10 do potęgi %d =%22.0f\n",i,pow(10,i));
  } 
return 0;
}
1

To uroda liczb typu double brak precyzji.
Zapewnię prowadzący chcę wyperswadować na stałe użycie funkcji pow w czym go popieram.

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