c++ zadanie z matury probnej, wie ktos jak ?

Odpowiedz Nowy wątek
2015-05-08 06:36
0

Witam:) mam problem z napisaniem takiego programu w c++. napisz algorytm:  umieszczający poszczególne cyfry liczby k w tablicy tab_cyfr[] w kolejności od najmniej do najbardziej znaczącej  zwracający liczbę cyfr jej zapisu dziesiętnego. Specyfikacja: Dane: k – liczba całkowita dodatnia. Wynik: n – liczba cyfr (całkowita dodatnia) w zapisie dziesiętnym liczby k, tab_cyfr[] – tablica zawierająca kolejne cyfry zapisu dziesiętnego liczby k, w kolejności od najmniej znaczącej do najbardziej znaczącej.
Pomoze ktos ?

popraw tag - vpiotr 2015-05-08 08:38
to jest nowa matura z infy (>= 2015)? - Wizzie 2015-05-09 15:42
próbna z grudnia 2015 - s_b_r_deepstep 2015-05-09 16:14
mamy maj ale rozumiem :D - Wizzie 2015-05-09 17:23
Hahaha no tak ^^ troche w przyszlosc wyszedlem *grudzien 2014 - s_b_r_deepstep 2015-05-09 20:00

Pozostało 580 znaków

2015-05-08 07:24
0

Ale w czym konkretnie masz problem?

Pozostało 580 znaków

2015-05-08 08:11
0

Myslalem zeby wczytac zlozona liczbe k, potem rozdzielic ja na pojedynczy cyfty i wczytac fo tabicy a potem ja uporzadkowac, tylko nie wiem jk np k=2831 tozdzieic na (2,8,3,1) ?

Pozostało 580 znaków

2015-05-08 08:28
1

Policz sobie na kartce (dla paru liczb): modulo 10, modulo, 100 ... a potem wynik rzutowania na (int) z dzielenia przez 10, 100 ...
wnioski pozostawiam tobie.

Pozostało 580 znaków

2015-05-08 08:36
1

Użyj operatora modulo (%).
Do przechowywania możesz użyć tablicy o rozmiarze:

numeric_limits<int>::digits10

gdzie int to typ wczytywanej liczby.

Ew. dodatki:

  • użycie stosu zamiast tablicy (czytelniejsze - do szkoły, wolniejsze)
  • użycie typedef lub decltype do powtórzenia typu zmiennej w tablicy
  • obsługa liczb ujemnych

Jak użyć modulo?

int liczba = 123;
int ostatnia_cyfra;

ostatnia_cyfra = liczba % 10;
liczba = (liczba - ostatnia_cyfra) / 10;

powtarzasz dopóki liczba != 0.


Szacuje się, że w Polsce brakuje 50 tys. programistów
edytowany 1x, ostatnio: vpiotr, 2015-05-08 08:37

Pozostało 580 znaków

2015-05-08 09:08
0

Okej juz dam rade dzieki :)

Pozostało 580 znaków

2015-05-08 09:33
0

Ma ktos pomysl jeszcze to tego probramu na jakas funkcje ktora bd sprawdzala czy jest to liczba narcystyczna(armstronga)??

edytowany 1x, ostatnio: s_b_r_deepstep, 2015-05-08 09:46

Pozostało 580 znaków

2015-05-08 10:28
0

Z poprzednich postów wiesz jak wyłuskać poszczególne cyfry, więc możesz je sumować i liczyć ile cyfr ma liczba. Do podniesienia do potęgi użyj funkcji pow() z math.h własnej funkcji mojePow która liczy potęgi liczb całkowitych i zwraca np. int

Może to wyglądać mniej więcej tak

bool czyAmstronga( int liczba )
{
     size_t sumaCyfr, iloscCyfr;

     //liczysz sume cyfr i ich ilość

    return mojePow( sumaCyfr, iloscCyfr ) == liczba;
}

edit jak wspomniał @kaczus możesz mieć problemy z pow, więc łatwo możesz napisać swoją funkcję podnoszącą do potęgi co trudne nie jest

edytowany 5x, ostatnio: stryku, 2015-05-08 10:36
użycie pow nie jest bezpieczne ze względu, że przeprowadza operacje na liczbach zmiennoprzecinkowych.... - kaczus 2015-05-08 10:30
uuuu pow( sumaCyfr, iloscCyfr ) == liczba takie przyrównanie zasługuje na uwagę!!! Wynik działania pow to liczba zmiennoprzecinkowa!!! - kaczus 2015-05-08 10:32
Dzięki za uwagę, poprawiłem :) - stryku 2015-05-08 10:34
no - żeby mi to było ostatni raz :P - kaczus 2015-05-08 10:35

Pozostało 580 znaków

2015-05-09 13:47
0
#include <cstdlib>
#include <iostream>

using namespace std;

void tablica(int tab_cyfr[], int k, int n)
{
 do{
    tab_cyfr[n]=k%10;
    k=k/10;
    n++;
 }while(k!=0);
}

int potega(int a, int n)
{
   if (n==0)
   return 1;
   else 
   return potega(a, n-1)*a;
}

int main()
{
 int k,tab_cyfr[100];
 int n=0, j=0;
 cout<<"podaj k: ";
 cin>>k;
 do{
    k=k-potega(tab_cyfr[j],n);
    j++;
    }while(j<n);
 if(k==0)
 cout<<"PRAWDA";
 else
 cout<<"FALSZ";
 cin.ignore();
 getchar();
 return 0;
}
edytowany 3x, ostatnio: s_b_r_deepstep, 2015-05-09 15:36
wstaw kod między &lt;code=cpp&gt;&lt;/code&gt; - twonek 2015-05-09 15:24
dopiero zacząłem pisać jakieś proste programy, mógłbyś bardziej wyjaśnić ? ^^ - s_b_r_deepstep 2015-05-09 15:26
edytuj post i wszystko co jest kodem źródłowym wstaw między znaczniki kolorujące składnię - twonek 2015-05-09 15:27

Pozostało 580 znaków

2015-05-09 13:48
0

czemu dla kazdej liczby wychodzi fałsz? :/

Pozostało 580 znaków

2015-05-09 15:27
0

tab_cyfr jest niezainicjalizowane.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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