![Forum ::BIOTECHNOLOGIA:: Strona Główna](http://picsrv.fora.pl/subSilver/images/logo_phpBB.gif) |
::BIOTECHNOLOGIA:: Forum studentów kierunku biotechnologia Politechniki Śląskiej
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Edmund
Dołączył: 09 Lis 2005
Posty: 387
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Chorzów Batory City, BioCh/1
|
Wysłany: Nie 22:50, 12 Lis 2006 Temat postu: Informatyka - Złożone struktury danych |
|
|
Już powoli szykuję zrobione zadania z najbliższego laboratorium POK "Złożone struktury danych, cz. 1." - czyli tablice.
Jak będę miał gotowe kody źródłowe razem z komentarzami (czyli najpóźniej rano we środę) - opublikuje to.
Prawdopodobnie na dniach powstanie moja własna stronka www z gotowymi zadaniami do ściągnięcia w ładnej uporządkowanej postaci.
EDIT:
Postaram się coby widoczna była data aktualizacji programu, oraz żeby był podgląd razem z kolorowaniem kodu. Ale proszę mnie nie poganiać stronka jest robiona przeze mnie by się sprawdzić w programowaniu w PHP.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
kot-niepłot
Dołączył: 29 Lis 2005
Posty: 324
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Gliwice BioAut
|
Wysłany: Wto 22:27, 14 Lis 2006 Temat postu: |
|
|
Na gmailu zamieściłem swój komplet rozwiązań.
Jeśli ktoś nie widzi sensu, lub po prostu nie rozumie jakiejś akcji, niech pyta na gg, pw, czymkolwiek lub na forum, jeśli to istotne.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
adalgrim
Starosta grupy AU (2rok)
Dołączył: 05 Lis 2005
Posty: 380
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: RAu
|
Wysłany: Wto 23:32, 14 Lis 2006 Temat postu: |
|
|
geezu co wy z tym gmailem.. a jak komus sie nie chce instalowac jakiegos badziewia, albo pare razy wiecej klikac (nie wszyscy mamy łącza politechniki)? tradycyjne metody z pierwszego roku były złe? Jakoś nikt nie narzekał..
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Edmund
Dołączył: 09 Lis 2005
Posty: 387
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Chorzów Batory City, BioCh/1
|
Wysłany: Wto 23:35, 14 Lis 2006 Temat postu: |
|
|
Zad1
Kod: |
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//program made by Andrzej "Edmund" Kosz
int main()
{
long int suma, i, liczby[1000], licznik[21];
/* Stosowanie generatora liczb pseudolosowych.
Generator liczb pseudolosowych (bo tak się nazywa fachowo te urządzonko) powinien być zainicjowany.
Ale NIE JEST to wymagane.
Inicjację robimy poprzez:
srand();
Ale zajmijmy się ważniejszą rzeczą - losowaniem.
Losowanie liczb realizujemy poprzez funkcję:
rand();
Liczba pseudolosowa jest losowana z przedziału od 0 do 65535
Żeby uzyskać wynik z dowolnego przedziału [poczatek,koniec] to losujemy w ten sposób:
poczatek + ( rand()% ( koniec- poczatek +1 ));
Operator % zwraca nam reszte z dzielenia przez (koniec - początek +1).
Stosujemy to po to by losowanie zwróciło nam wynik mieszczący się od zera do
zakresu (tzn. do różnicy pomiędzy końcem a początkiem przedziału).
Później do tak wylosowanej liczby dodajemy początek zakresu coby "przesunąć to wszystko w górę"
*/
srand(0); //tutaj inicjujemy jak to mówią fachowcy "generator liczb pseudolosowych" :D
//petla odpowiedzialna za zerowanie licznika - ponieważ jak sie nie zerowało wartości licznika to wychodziły jaja :D
for(i=0;i<=20;i++)
{
licznik[i]=0;
}
//petla odpowiedzialna za losowanie liczb i sprawdzanie liczności każdej z nich
for(i=0;i<=999;i++)
{
liczby[i] = 10+(rand()%11); //tutaj losujemy liczbe z zakresu [10,20]
//a tutaj sprawdzamy jej liczność - tzn. kwalifikujemy ją do odpowiedniej grupy liczności
if (liczby[i]==10) {licznik[10]++;}
if (liczby[i]==11) {licznik[11]++;}
if (liczby[i]==12) {licznik[12]++;}
if (liczby[i]==13) {licznik[13]++;}
if (liczby[i]==14) {licznik[14]++;}
if (liczby[i]==15) {licznik[15]++;}
if (liczby[i]==16) {licznik[16]++;}
if (liczby[i]==17) {licznik[17]++;}
if (liczby[i]==18) {licznik[18]++;}
if (liczby[i]==19) {licznik[19]++;}
if (liczby[i]==20) {licznik[20]++;}
}
//petla odpowiedzialna za drukowanie wyników - tzn. drukowanie wystapien liczby z zakresu [10,20]
for(i=10;i<=20;i++)
{
suma+=licznik[i];
printf("Ilosc wystapien liczby %d jest rowne= %d\n",i,licznik[i]);
}
system("PAUSE");
return 0;
}
|
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Edmund
Dołączył: 09 Lis 2005
Posty: 387
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Chorzów Batory City, BioCh/1
|
Wysłany: Wto 23:36, 14 Lis 2006 Temat postu: |
|
|
Zad3
Kod: |
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//program made by Andrzej "Edmund" Kosz
int main()
{
long int n, i, j;
float wejsciowa[10][10], transponowana[10][10];
// n to ilość wierszy oraz kolumn
// i to numer wiersza, j to numer kolumny
// będę się odwoływał do macierzy w ten sposób: macierz [numer_wiersza] [numer_kolumny]
//petla do ...while wymusza na użytkowniku by n<= 10
do{
printf("Podaj wymiar macierzy (musi byc <=10) N= ");
scanf("%d",&n);
} while (n>10);
//tutaj wczytujemy dane nasze w pętli - kolumnami
for (j=0;j<=(n-1);j++)
{
for(i=0;i<=(n-1);i++)
{
printf("Podaj liczbe z %d kolumny i %d wiersza = ",j+1,i+1);
scanf("%f",&wejsciowa[i][j]);
}
}
//tutaj wypisujemy wierszami naszą macierz wejściową
printf("\nMacierz nietransponowana - wejsciowa: \n");
for (i=0;i<=(n-1);i++)
{
printf("\n");
for(j=0;j<=(n-1);j++)
{
printf("%.2f ",wejsciowa[i][j]);
}
}
//dokonujemy transpozycji macierzy - przypisujemy dla Xj,i=Xi,j
for (i=0;i<=(n-1);i++)
{
printf("\n");
for(j=0;j<=(n-1);j++)
{
transponowana[j][i]=wejsciowa[i][j];
}
}
//tutaj wypisujemy wierszami naszą macierz transponowaną
printf("\nMacierz transponowana: \n");
for (i=0;i<=(n-1);i++)
{
printf("\n");
for(j=0;j<=(n-1);j++)
{
printf("%.2f ",transponowana[i][j]);
}
}
printf("\n");
system("PAUSE");
return 0;
}
|
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Edmund
Dołączył: 09 Lis 2005
Posty: 387
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Chorzów Batory City, BioCh/1
|
Wysłany: Wto 23:37, 14 Lis 2006 Temat postu: |
|
|
Zad4
Kod: |
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//program made by Andrzej "Edmund" Kosz
int main()
{
long int n, m, i, j, max_i, max_j;
float macierz[20][20], max;
// m to ilośc wierszy, n to ilość kolumn
// i to numer wiersza, j to numer kolumny
// będę się odwoływał do macierzy w ten sposób: macierz [numer_wiersza] [numer_kolumny]
//petla do ...while wymusza na użytkowniku by n<= 20 i m<= 20
do{
printf("Podaj ilosc wierszy macierzy (musi byc <=20) M= ");
scanf("%d",&m);
printf("Podaj ilosc kolumn macierzy (musi byc <=20) N= ");
scanf("%d",&n);
} while (n>20 || m>20);
//tutaj wczytujemy dane nasze w pętli - wierszami
for (i=0;i<=(m-1);i++)
{
for(j=0;j<=(n-1);j++)
{
printf("Podaj liczbe z %d wiersza i %d kolumny = ",i+1,j+1);
scanf("%f",&macierz[i][j]);
}
}
//tutaj wypisujemy wierszami naszą macierz
printf("\nOto cala macierz: \n");
for (i=0;i<=(n-1);i++)
{
printf("\n");
for(j=0;j<=(m-1);j++)
{
printf("%.2f ",macierz[i][j]);
}
}
//teraz sprawdzamy element maksymalny, ale najpierw pod dane elementu maksymalnego podajemy dane pierwszego elementu
max_i=0;
max_j=0;
max=macierz[0][0];
for (i=0;i<=(n-1);i++)
{
for(j=0;j<=(m-1);j++)
{
if(max<=macierz[i][j])
{
max=macierz[i][j];
max_i=i+1;
max_j=j+1;
}
}
}
printf("\n");
printf("Element maksymalny jest w wierszu %d i kolumnie %d i wynosi= %f\n",max_i,max_j,max);
system("PAUSE");
return 0;
}
|
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Edmund
Dołączył: 09 Lis 2005
Posty: 387
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Chorzów Batory City, BioCh/1
|
Wysłany: Wto 23:37, 14 Lis 2006 Temat postu: |
|
|
Zad5
Kod: |
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//program made by Andrzej "Edmund" Kosz
int main()
{
long int n, m, i, j;
float macierz[20][20], suma;
// m to ilośc wierszy, n to ilość kolumn
// i to numer wiersza, j to numer kolumny
// będę się odwoływał do macierzy w ten sposób: macierz [numer_wiersza] [numer_kolumny]
//petla do ...while wymusza na użytkowniku by n<= 20 i m<= 20
do{
printf("Podaj ilosc wierszy macierzy (musi byc <=20) M= ");
scanf("%d",&m);
printf("Podaj ilosc kolumn macierzy (musi byc <=20) N= ");
scanf("%d",&n);
} while (n>20 || m>20);
//tutaj wczytujemy dane nasze w pętli - wierszami
for (i=0;i<=(m-1);i++)
{
for(j=0;j<=(n-1);j++)
{
printf("Podaj liczbe z %d wiersza i %d kolumny = ",i+1,j+1);
scanf("%f",&macierz[i][j]);
}
}
//tutaj wypisujemy wierszami naszą macierz
printf("\nOto cala macierz: \n");
for (i=0;i<=(n-1);i++)
{
printf("\n");
for(j=0;j<=(m-1);j++)
{
printf("%.2f ",macierz[i][j]);
}
}
printf("\n");
//tutaj sumujemy wiersze macierzy i po kolei je wypisujemy
for (i=0;i<=(n-1);i++)
{
suma=0;
for(j=0;j<=(m-1);j++)
{
suma+=macierz[i][j];
}
printf("Suma %d wiersza jest rowna= %f\n",i+1,suma);
}
system("PAUSE");
return 0;
}
|
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Edmund
Dołączył: 09 Lis 2005
Posty: 387
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Chorzów Batory City, BioCh/1
|
Wysłany: Wto 23:42, 14 Lis 2006 Temat postu: |
|
|
adalgrim napisał: | geezu co wy z tym gmailem.. |
Adam - ja nie wrzucam rzeczy na gmail'a bo mi sie nie chce instalować badziewia ;P
Rozwiązania moich zadan z infy będą na mojej własnej stronce i mam to gdzieś czy sie komuś to podoba czy nie ;P
Możecie to sobie wrzucić na gmaila jak chcecie. Mnie będzie łatwiej zrobić to na własnej stronce
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
kot-niepłot
Dołączył: 29 Lis 2005
Posty: 324
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Gliwice BioAut
|
Wysłany: Śro 10:04, 15 Lis 2006 Temat postu: |
|
|
Jak nie to nie. Tylko teraz się forum zaśmieca.
Po kolei wszystkie:
Kod: | #include <iostream.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(0));
int l[11] = { 0 };
int a;
for(int x=0; x<1000; x++)
l[rand()%11]++;
for(int x=0; x<11; x++)
cout << "Ilosc wystapien " << x+10 << ":\t" << l[x] << endl;
cout << endl;
system("PAUSE");
return 0;
} |
Kod: | #include <iostream.h>
#include <stdlib.h>
int main()
{
int N, x, y;
int tab[10][10]; // max 10x10
cout << "Podaj dodatni wymiar tablicy N: ";
cin >> N;
cout << "Podawaj elementy tablicy, wierszami\n";
for(x=0; x<N; x++)
for(y=0; y<N; y++)
cin >> tab[x][y];
/* Sprawdzenie symetryczności */
int sym = 1;
for(x=0; x<N && sym; x++)
for(y=0; y<N; y++)
if(tab[x][y]!=tab[y][x])
{ sym=0;
break;
}
if(sym) cout << "Macierz symetryczna" << endl;
else cout << "Macierz niesymetryczna" << endl;
/* Sprawdzenie diagonalności */
int diag = 1;
for(x=0; x<N && diag; x++)
for(y=0; y<N; y++)
if(y!=x && tab[x][y]!=0)
{ diag = 0;
break;
}
if(diag) cout << "Macierz diagonalna" << endl;
else cout << "Macierz niediagonalna" << endl;
/* Sprawdzanie górnotrójkątności */
int gt = 1;
for(x=0; x<N && gt; x++)
for(y=x+1; y<N; y++) // wtedy zawsze y>x
if(tab[x][y]!=0)
{ gt = 0;
break;
}
if(gt) cout << "Macierz gornotrojkatna" << endl;
else cout << "Macierz niegornotrojkatna" << endl;
cout << endl;
system("PAUSE");
return 0;
} |
Kod: | /* Jak dobrze pamiętam, to Metzger mówił że, "nie daj, Boże",
* nie będziemy transponować macierzy */
#include <iostream.h>
#include <stdlib.h>
int main()
{
int t1[10][10];
// int t2[10][10];
int N, x, y;
cout << "Podaj dodatni rozmiar macierzy N: ";
cin >> N;
cout << "Wpisz macierz (kolumnami)\n";
for(x=0; x<N; x++)
for(y=0; y<N; y++)
cin >> t1[y][x];
/* Sposób prosty, szybki, na skróty */
cout << "Macierz pierwotna:" << endl;
for(x=0; x<N; x++)
{ for(y=0; y<N; y++)
cout << t1[x][y] << " ";
cout << endl;
}
cout << "Macierz transponowana:" << endl;
for(x=0; x<N; x++)
{ for(y=0; y<N; y++)
cout << t1[y][x] << " ";
cout << endl;
}
/* Drugi sposób - faktyczne transponowanie, nie tylko na ekranie ;)
for(x=0; x<N; x++)
for(y=0; y<N; y++)
t2[x][y] = t1[y][x];
* Teraz wystarczy je wyświetlić:
...
cout << t1[x][y];
...
cout << t2[x][y];
*/
cout << endl;
system("PAUSE");
return 0;
} |
Kod: | /* Można to zrobić bez tablicy, ale potrzebna jest w zadaniu 5 */
#include <iostream.h>
#include <stdlib.h>
int main()
{
cout << "Podaj wymiary tablicy: ";
int N, M, x, y, max, w=-1;
int t[20][20];
cin >> N >> M;
for(x=0; x<N; x++) // wiersze
for(y=0; y<M; y++) // kolumny
{ cin >> t[x][y];
if(w==-1) max = t[x][y];
if(t[x][y]>=max) { w = x+1; max = t[x][y]; }
}
cout << "Najwieksza wartosc to " << max << "\n" <<
"Ostatnio w wierszu " << w << endl;
cout << endl;
system("PAUSE");
return 0;
} |
Kod: | /* Do tego zadania również nie jest potrzebna tablica 2wymiarowa, wystarczy 1 */
#include <iostream.h>
#include <stdlib.h>
int main()
{
cout << "Podaj wymiary tablicy: ";
int N, M, x, y;
int t[20][20];
cin >> N >> M; // wiersze x kolumny
for(x=0; x<N; x++) // wiersze
for(y=0; y<M; y++) // kolumny
{ cin >> t[x][y];
}
// sumy przechowuję w 0-wym elemencie każdego rzędu
for(x=1; x<M; x++) // !
for(y=0; y<N; y++)
t[y][0] += t[y][x];
for(x=0; x<N; x++)
cout << "Suma rzedu " << x+1 << ": " << t[x][0] << endl;
cout << endl;
system("PAUSE");
return 0;
} |
Kod: | #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(0));
printf("Podaj wymiary tablicy: ");
int N, M, x, y;
float t[20][20];
scanf("%d %d", &N, &M); // wiersze x kolumny
printf("Wpisz tablice: \n");
for(x=0; x<N; x++)
t[x][0] = rand()%11;
for(x=0; x<M; x++)
t[0][x] = rand()%11;
for(x=1; x<N; x++) // wiersze
for(y=1; y<M; y++) // kolumny
t[x][y] = (t[x][y-1] + t[x-1][y])/2;
printf("Tablica gotowa:\n");
for(x=0; x<N; x++)
{ for(y=0; y<M; y++)
printf("%.1f ", t[x][y]);
printf("\n");
}
printf("\n");
system("PAUSE");
return 0;
} |
Ad Andrzej:
srand(0) zawsze zainicjuje tą samą wartością => rand() będzie zawsze dawało tą samą sekwencję. Dlatego stosuje się myk z pobieraniem czasu:
srand(time(0)). Do użycia time() trzeba załączyć time.h .
A zadanie 1 rozwiązałem dużo krócej: losowanie z przedziału <10,20> to to samo co losowanie z <0,10>, więc po prostu losuję indexy tablicy
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
migothka
Dołączył: 20 Paź 2005
Posty: 845
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: BioCh/1
|
Wysłany: Śro 10:17, 15 Lis 2006 Temat postu: |
|
|
Umieszczanie na forum czegos co moze byc przydatne to nie jest zasmiecanie.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Michele
Dołączył: 15 Sty 2006
Posty: 1041
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: BioAut, Gleiwitz-Petersdorf
|
Wysłany: Śro 11:10, 15 Lis 2006 Temat postu: |
|
|
Ad generatory losowe.
[link widoczny dla zalogowanych]
Dlaczego wartości za każdym uruchomieniem programu są takie same dla srand(x), gdzie x się nie zmienia? Otóż w pliczku co podałem wyżej jest mniejwięcej opisany sposób, w jaki powstają liczby losowe. To są ciągi, którego każdy kolejny wyraz jest poprostu random=random+1,czyli każde wykonanie randomu zmienia ciąg o kolejny wyraz (wyrazy). Elektronika nie wyróżnia losowości, przypadku, a napewno nie cyfrówka. Dlatego nie ma idealnego randoma. Żeby za każdym razem było inaczej wystarczy uzależnić srand() od czasu...wtedy będą inne wartości poszczególnego wyrazu ciągu, a zatem będzie to faktycznie random, którego nie możemy przewidzieć.
Adam, z tym akurat się też spotkałem w povray'u. Random nie był randomem. Bo za każdym razem renderingu w tym samych miejscach się (płatki śniegu ukazywały). Ma to w tym znaczeniu pozytyw, że gdy robisz animacje z tysiącami klatek i zauważyłeś gdzieś błąd, to nie musisz wszystkich na nowo renderować, tylko odpowiednią klatkę. Random zawsze się tam samo zachowuje, przez to nie ma skoków. Dlatego przypuszczenia moje odnośnie tego się sprawdziły W pascalu nie ma srand(), no jest randomize, którego jak nie zadeklarujesz będzie zmienną losową na podstawie czasu... jak jest w php, to chyba Ty lepiej wiesz.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
![](http://picsrv.fora.pl/subSilver/images/spacer.gif) |
|
|
Możesz pisać nowe tematy Możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
|