-
-
-
gorgon sorry nie c tylko i
d41d8cd98f00b204e9800998ecf8427e
-
-
-
To i zlicza ile razy pojawia się dana potęga liczby k w liczbie n. Jak juz skonczy te potege sprawdzac (czytaj: n bedzie juz mniejsze od tej potegi) [np n = 9, system k = 2 to k^3 = 8] to bierze nizsza potege i sprawdza ile razy sie zawiera etc i zawsze te ilosc wypisuje.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
ok, a mozna mu to jutro wysłac na meila i nie przychodzic?? Bo pewnie cale zajecia bedzie sprawdzal te zadania
d41d8cd98f00b204e9800998ecf8427e
-
-
-
fonek, można. Ale jak mu się program nie spodoba to wtedy nie masz szans odwoływania się od oceny I kłócenia
d41d8cd98f00b204e9800998ecf8427e
-
-
-
dzieki Gorgonek,jeszcze tylko pytanko odnosnie formy,komentarze maja byc do wszystkich instrukcji?
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Komentarze ogolnie do programu, +/- co gdzie sie dzieje
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Mam pytanko o jakim linuksie jest tutaj mowa??
_________________ Jeśli sądzisz ,że widziałeś wszystko, to znaczy że nie byłeś na siłowni u panka, arnolda i pudziana
d41d8cd98f00b204e9800998ecf8427e
-
-
-
fracky napisał/a: | Mam pytanko o jakim linuksie jest tutaj mowa?? |
Linux != Unix
z tego co wyczytałem...to mowa o Solarisie ... czyli Uniksie
pzdr.
_________________ Wielki majestat wielkiego gmachu,
Wybrany przez inkwizytora struktur.
- Wallace Stevens
[www]
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Na to co robimy to może być, ale osobiście mam takie mieszane uczucia. Bo jak Win 3.11 trochę wygląda
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Ktos tam o mnie wspominal, wiec wrzuce swoje niedorobione implementacje Pisane troche olewczo, 1 do przepisania ale nie chce mi sie w tej chwili tego robic
1:
Kod: |
/*
Napisz program, który czyta liczb calkowit 2<k<10 oraz liczb calkowit
n 0 a nastpnie drukuje zapis liczby n w systemie o podstawie k.
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/* przydzielic pamiec dynamicznie czy uzyc stalego bufora?
dynamiczne alokowanie trwa dluzej ale mamy pewnosc, ze
nie przeciazymy bufora */
/* #define USE_MALLOC */
#ifdef USE_MALLOC
char * __alloc_buffer( int number, int system )
{
int length = 0;
while( number > 0 )
{
number /= system;
length++;
}
return malloc( length + 1 ); /* +1 dla nulla */
}
#endif /* USE_MALLOC */
void convert( int number, int system, char * buffer )
{
char part;
int length = 0;
int i;
/* dzielimy liczbe przez "k" i dodajemy modul
do wyjscia */
while( number > 0 )
{
part = number % system;
number /= system;
buffer[length] = part + '0';
length++;
}
buffer[length] = 0;
/* teraz musimy odwrocic stringa */
for( i = 0; i < length >> 1; i++ )
{
/* w buffer[length] jest null, nie chcemy go na poczatku */
buffer[i] ^= buffer[length - i - 1];
buffer[length - i - 1] ^= buffer[i];
buffer[i] ^= buffer[length - i - 1];
}
}
int main( void )
{
int k = -1, n = -1;
#ifdef USE_MALLOC
char * buffer;
#else
char buffer[64];
#endif
while( k < 2 || k > 10 )
{
printf( "k (system liczbowy, 2-10) = " );
scanf( "%d", &k );
}
while( n < 1 )
{
printf( "n (liczba, >0) = " );
scanf( "%d", &n );
}
#ifdef USE_MALLOC
buffer = __alloc_buffer( n, k );
#endif
convert( n, k, buffer );
puts( buffer );
return 0;
}
|
2:
Kod: |
#include <stdio.h>
#include <string.h>
/* pomocnicza funkcja zamieniajaca znak na wartosc liczbowa
w systemach 2-16 */
int __ctoi( char c )
{
if( c >= '0' && c <= '9' )
return c - '0';
else if ( c >= 'a' && c <= 'f' )
return c - 'a' + 10;
else if( c >= 'A' && c <= 'F' )
return c - 'A' + 10;
return -1;
}
/* funkcja zamienia liczbe zapisana w systemie `base' na
system dziesietny korzystajac z wag poszczegolnych
liczb cyfr w liczbie o danej podstawie */
int convertToDec( int base, char * value )
{
int length = strlen( value ) - 1;
int multipler = 1, result = 0;
/* od konca, dzieki temu nie bedziemy musieli za kazdym
razem liczyc potegi */
for( ; length >= 0; length-- )
{
result += __ctoi( value[length] ) * multipler;
multipler *= base;
}
return result;
}
int main( void )
{
char buffer[24];
int base = -1;
while( base < 2 || base > 16 )
{
printf( "podstawa systemu (2-16) = " );
scanf( "%d", &base );
}
printf( "liczba = " );
scanf( "%s", buffer );
printf( "%d\n", convertToDec( base, buffer ) );
}
|
3:
Kod: |
#include <stdio.h>
typedef struct
{
int Re;
int Im;
} Complex;
void add( Complex * c1, Complex * c2, Complex * result )
{
result->Re = c1->Re + c2->Re;
result->Im = c1->Im + c2->Im;
}
void sub( Complex * c1, Complex * c2, Complex * result )
{
result->Re = c1->Re - c2->Re;
result->Im = c1->Im - c2->Im;
}
void multiple( Complex * c1, Complex * c2, Complex * result )
{
result->Re = c1->Re * c2->Re - c1->Im * c2->Im;
result->Im = c1->Re * c2->Im + c2->Re * c1->Im;
}
int main( void )
{
return 0;
}
|
4:
Kod: |
/* oblicz x^27 tylko mnozac */
#include <stdio.h>
/*
funkcja dzieli wyrazenie na iloczyn 2 liczb, po policzeniu pierwszgo
iloczynu nie musimy liczyc nastepnych, wiemy natomiast ile ich jest,
wiec mamy potege z wykladnikiem 2 razy mniejszym
np. 2^8 = 2*2*2*2*2*2*2*2 = (2*2)^4 = 4*4*4*4 = (4*4)^2 = 8*8
*/
int power( int x, int y )
{
if( y == 1 )
{
return x;
}
else if( y == 2 )
{
return x * x;
}
else
{
/* jesli wykladnik jest parzysty to mozemy wywolac
rekurencyjnie power */
if( ( y & 1 ) == 0 )
{
return power( x * x, y >> 1 );
}
/* jesli nie to trzeba jeszcze "domnozyc" jedna podstawe */
else
{
return power( x * x, y >> 1 ) * x;
}
}
}
int main( void )
{
int x;
printf( "x = " );
scanf( "%d", &x );
printf( "x^27 = %d\n", power( x, 27 ) );
return 0;
}
|
Co do uniksa, linuksa itp, chodzi o to, zeby kompilowalo sie w pod gcc w czystym C (cc -ansi -pedantic plik.c -o plik)
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Na laptopie Ubuntu 6.10
Jak ktoś miał lepsze rozwiązanie w/w zadań to mam nadzieję się z nami podzieli
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Kod: | //ZADANIE 1
#include <stdio.h>
int main(void)
{
int k,liczba,a,b; //DEKLARACJA ZMIENNYCH K= PODSTAWA SYSTEMU ,B= LICZBA Z POTEGOWANIA PODSTAWY ,A = LICZBA POMOCNICZA , LICZBA = LICZBA WCZYTANA Z KLAWIATURY
do
{
printf("Na jaki system mam przeliczyc ? ");
scanf("%d",&k); //WCZYTANIE PODSTAWY SYSTEMU
if(k>10||k<2)
printf("blad podales zly system sproboj jeszcze raz\n");
}while(k>10||k<2) ; //PETLA DO WHILE ABY UNIKNAC BLEDNYCH DANYCH
do
{
printf("Podaj liczbe do zamiany: ");
scanf("%d",&liczba); //WCZYTANIE LICZBY
if(liczba<0)
printf("bledna liczba podaj jeszcze raz\n");
}while(liczba<0); //PETLA DO WHILE ABY UNIKNAC BLEDNYCH DANYCH
for(b=1;b<=liczba;b=b*k); //PODNOSIMY PODSTAWE DO POTEGI TAKIEJ ABY LICZBA NOWO POWSTALA -B BYLA WIEKSZA NIZ LICZBA WCZYTANA
b=b/k; //DZIELIMY TA LICZBE PRZEZ PODSTAWE
for(;liczba>=1;b=b/k) //DZIALAMY W PETLI FOR TAK DLUGO POKI NOWO POWSTALA LICZBA B PODZIELONA PRZEZ PODSTAWE NIE DA LICZBY 1
{
a=0;
do //PETLA DO WHILE DZIALAJACA AK DLUGO JAK LICZBA WCZYTANA JEST WIEKZA OD LICZBY POTEGOWANIA -B
{
if((liczba-b)>=0) //JEZLEI ROZNICA LICZBY WCZYTANEJ A LICZY Z POTEGOWANIA JEST WIEKSZA OD 0
{
a++; //TO ZWIEKSZ LICZBE A O 1
liczba=liczba-b; //NASTEPNIE WYKONAJ TO DZIALANIE
}
}while (liczba>=b);
printf("%d",a);
}
return 0;
}
[size=9][ [i][b]Dodano[/b]: 2007-03-05, 21:20[/i] ][/size]
// ZADANIE 2
#include <stdio.h>
int zlicz(char *a) //FUNKCJA ZLICZAJACA ILOSC ELEMENTOW LICZBY
{
int b=0;
for(int i=0;a[i]!=0;i++)
b=i;
return b;
}
int funk1(char znak,int k) // FUNKCJA PRZERABIAJACA ZNAKI NA LICZBY CALKOWITE
{
int b=-1;
if(znak>='A'&&znak<='F')
b=znak-'A'+10; //B JEST ROWNE MIESCU W KODZIE ASCI MIEJSCE ZNAKU ODJAC MIESCE ZNAKU A DODAC 10
if(znak>='0'&&znak<='9')
b=znak-'0';
if (znak>='a'&&znak<='f')
b=znak-'a'+10;
if(b>k-1||b<0) //WARUNEK NA POPRAWNOSC LICZB WPISANYCH Z KLAWIATURY
printf("ERROR!!\n");
return b;
}
int funk2(int k,char *a) // FUNKCJA ZMIENIAJACA NA LICZBY SYSEMU DZIESIETNEGO
{
int dlugosc,liczba,stala; // DEKLARACJA ZMIENNYCH DLUGOSC= LICZBA ELEMENTOW TABLICY, LICZBA= LICZBA W SYST. DZIESIETNYM, STALA = KOLEJNE POTENGI SYTEMU
stala=1; //SYSTEM Z JAKIEGO PRZELICZAMY DO POTEGI ZEROWEJ
liczba=0;
dlugosc=zlicz(a) ; //WYKORZYSTANIE FUNKCJI ZLICZ DO ZLICZENIA ELEMENTOW LICZBY
for (dlugosc;dlugosc>=0;dlugosc--)
{
liczba = liczba+funk1(a[dlugosc],k)*stala; //WZOR NA PRZELICZANIE Z DOWOLNEGO SYSTEMU NA SYSTEM DZIESIETNY
stala=stala*k; //KOLEJNE POTEGI SYTEMU Z JAKIEGO PRZELICZAMY
}
return liczba; //LICZBA DZIESIETNA
}
int main(void)
{
int k; //DEKLARACJE ZMINNYCH K= PIERWOTNY SYSTEM
char a[32]; // LICZBA W PIEROTNYM SYSTEMIE
do
{
printf("Z jakiego mam przeliczac systemu? (2,16)\n");
scanf("%d",&k);
if(k<2||k>16)
printf("bledny system prosze podac jeszcze raz\n");
}while (k<2||k>16); //PETLA DO WHILE DO SPRAWDZENIA POPRAWNOSCI WPISANEGO SYSTEMU
printf("jaka liczbe chcerz zamienic ");
scanf("%s",a);
printf("\nW w systemie dziesietmym wynosi %d",funk2(k,a));
return 0;
}
[size=9][ [i][b]Dodano[/b]: 2007-03-05, 21:22[/i] ][/size]
w trzecim nie wymyslilem nic nowego oprocz tego co jest
[size=9][ [i][b]Dodano[/b]: 2007-03-05, 21:26[/i] ][/size]
//ZADANIE 4
#include <stdio.h>
int main( void )
{
int x,a,b,c;
printf("Jaka liczbe mam podniesc do potegi?\n");
scanf("%d", &x);
a=x*x*x;
b=a*a*a;
c=b*b*b;
printf("%d do potegi 27 wynosi %d \n",c);
return 0;
} |
//================================
//kody programów proponuję umieszczać między O wiele lepiej się czyta
samoorai
Ostatnio zmieniony przez samoorai 2007-03-06, 17:26, w całości zmieniany 1 raz d41d8cd98f00b204e9800998ecf8427e
-
-
-
Słyszałem, że jest nowe zadanie z algorytmów na poniedziałek. Wiek ktoś może jakie jest to zadanie??
_________________ "Widzę siebie w obrazach przeszłości
Migawki życia przelatują przed moją twarzą
Całe moje życie w jednej sekundzie
Zapada cisza
Nie czuję nic"
d41d8cd98f00b204e9800998ecf8427e
-
-
-
ramios, każda grupa miała inne zadanie [tak twierdził pan Pawlik]. O której masz zajęcia
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Ale jesli ktos ma mozliwoc niech zamiesci te zadania dla swojej grupy co wy na to
mi ta najbardziej zalezy na grupie poniedzialkowel na 17.15 hehe piszcie co wiecie
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Wiec grupa: poniedzialek godzina 15-17 ma zadania na 50 i na 40 pkt.
Ciag liczb np [4, 3, 7, 2, 8, 9] i musi dokonac algorytmu takiego
4 3 | 7 2 | 8 9
1. Bierzesz i sprawdzasz parami ktora jest wieksza liczba, podmieniasz w razie czego
3 4 | 2 7 | 8 9
2. Teraz sprawdzasz ktora z tych wiekszych [po prawej stronie w parze] jest najwieksza i przestawiasz na koniec.
3 4 | 2 7 | 8 9 akurat nic sie nie zmienilo
3. Odcinasz ostatnia liczbe i teraz sprawdzasz pary nowe
3 | 4 2 | 7 8 [9] albo 3 4 | 2 7 | 8 [9]
Powtarzasz krok 1.
3 | 2 4 | 7 8 w drugim wypadku 3 4 | 2 7 | 8 [9]
Powtarzasz krok 2. ale dla nieparzystych wpierw porownujesz z ta pojedyncza i ja z tymi wiekszymi w parze. Wybierasz najwieksza znowu.
3 | 2 4 | 7 8 bez zmian w obu wypadkach 3 4 | 2 7 [8, 9]
Krok 3.
3 2 | 4 7 [8, 9] lub 3 4 | 2 7 [8, 9]
2 3 | 4 7 [8, 9] lub 3 4 | 2 7 [8, 9]
2 | 3 4 [7, 8 ,9] lub 3 4 | 2 [7, 8 ,9]
2 3 [4, 7, 8, 9] lub 3 2 [4, 7, 8, 9]
wynikowo 2, 3, 4, 7, 8, 9 Roznica pojawia sie przy nieparzystych, albo porownujesz pary od 0 i na koncu z ostatnia liczba te "wieszke z pary" albo od 1 i potem porownujesz z 0owa liczba te najwieksze z par
Jak juz posortujesz to musisz jest ustawic tak. Wpierw rosnaco nieparzyste a potem malejaco parzyste, czyli w tym wypadku 3, 7, 9 | 8, 4, 2.
To jest wersja za 50pkt, mozesz zrobic bez tego sortowania ktore na przykladzie rozpisalem to wtedy max 40pkt mozesz dostac Ale wynik musi byc ten sam. Czyli 3, 7, 9 | 8, 4, 2.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
a druga grupa na 17.15 jest ktos tu z drugiej grupy
d41d8cd98f00b204e9800998ecf8427e
-
-
-
A skad wiecie o tych zadaniach nie przypominam sobie zeby pawlik cos mowil apropos nowych zadan na jego stronce tez jest tylko pierwsza list. Wiec jesli ktos wie co ma zrobic grupa na 17 w poniedzialek to niech napisze SVP;]
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Zostalem dzisiaj styrany za zgapianie rozwiazan o_O
d41d8cd98f00b204e9800998ecf8427e
-
-
-
prosze niech sie ktos odezwie z grupy ponedzialkowej (17.15) i powie co zadal pawlik prosze prosze prosze
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Dobra juz coś wiem z grupy na 17:15.
Zadanie jest bardzo podobne do grupy z 15.
Mianowicie chodzi o posortowanie tablicy liczb.
Z tym, że dzielimy tę tablicę na dwie części: [1,22,3|4,15,26]
i porównujemy ze sobą element z lewej strony z elementem ze strony drugiej, z tym że:
Dla studentów z nieparzystym numerem indeksu (albumu) należy w pierwszej części tablicy
uporzadkować rosnąco liczby nieparzyste, a po prawej stronie liczby parzyste malejąco:
Czyli najpierw sortujemy parzyste malejąco, czyli można sortować od tyłu rosnąco
Interesują nas najmniejsze liczby z obu stron i na dodatek parzyste:
[1,(22),3|(4),15,26]
4 jest mniejsze zatem idzie na koniec
dalej bierzemy następną liczbę z prawej i porównujemy ją z już wcześniej sprawdzoną 22
[1,(22),3|15,(26),4]
21 mniejsze niż 26 czyli 22 na koniec itd.
Później należy podobnie postąpić z nieparzystymi żeby były z lewej strony rosnąco.
Takie zadanie jest na 40 pkt. Dal osób z parzystym numerem indeksu należ posortować na odwrót czyli
najpierw parzyste rosnąco, a później nieparzyste malejąco choć tutaj nie mam całkowitej pewności
Pozdro
_________________ "Widzę siebie w obrazach przeszłości
Migawki życia przelatują przed moją twarzą
Całe moje życie w jednej sekundzie
Zapada cisza
Nie czuję nic"
d41d8cd98f00b204e9800998ecf8427e
-
-
-
mogłby ktos pokazac jak tak mniej wiecej powinien wygladac ten program z gr. 15-17 bo napisałam i niby działa i jest ok, ale mam watpliwosci.z gory dzieki
d41d8cd98f00b204e9800998ecf8427e
Powered by phpBB modified by Przemo © 2003 phpBB Group. Then, after many years modified again, this time by Piotrek © 2014 Strona wygenerowana w 39,1ms. Zapytań do SQL: 16
|