/*
Title: Rekurencyjny algorytm szybkiego potęgowania o złożoności O(log n)
*/
#include <stdio.h>
int potegowanie(int podstawa, int wykladnik);
int main()
{
int wynik = potegowanie( 2, 6 ); /* 2^6 */
printf( "Wynik potegowania 2^6: %i\n", wynik ); /* Wynik 64 */
return 0;
}
int potegowanie( int podstawa, int wykladnik )
{
if( wykladnik == 0 ) /* Potęgowanie podstawy o wykładniku równym 0 */
{
return 1;
}
else if( wykladnik % 2 == 1 ) /* Dla wykładnika nieparzystego */
{
return podstawa * potegowanie( podstawa , wykladnik - 1 );
}
else /* Dla wykładnika parzystego */
{
return potegowanie( podstawa * podstawa, wykladnik / 2 );
}
}
Napisać funkcję char * Zastap (const char *napis) , która będzie usuwała z tekstu zawierającego liczby całkowite i litery, wszystkie znaki, które nie wchodzą w skład liczby. Pozostawione liczby mają być oddzielone jedną spacją. Nowy tekst jest zwracany jako wskaźnik do poprawionego napisu. Przykład: ‘’ 123 zl 50 zl 632 zl 56zl’’ Po przekształceniu: ‘’ 123 50 632 56” #include <stdio.h> #include <stdlib.h> #include <string.h> #define xmalloc(typ, ilosc) (typ*) _new((ilosc)*sizeof(typ)) void* _new(size_t rozmiar) { void* p; p = malloc(rozmiar); if(p == NULL) { printf("Brak pamieci!"); exit(0); } return p; } char *Zastap(const char *napis) { char *nowy = xmalloc(char, strlen(napis)); while( (*++napis) != '\0') { if( (*napis >= '0' && *napis <= '9') || (*napis == ' ' && *(napis+1) ...
Komentarze
Prześlij komentarz