Misiek Napisano 7 Kwietnia 2009 Udostępnij Napisano 7 Kwietnia 2009 Zadanie - Tablice dwuwymiarowe 1. Zadeklaruj tablicę dwuwymiarową n x 3. W programie, przy użyciu pętli for, umieść w tablicy odpowiednio: w kolumnie pierwszej kolejne liczby całkowite, w kolumnie drugiej – kwadraty tych liczb, w kolumnie trzeciej sumę liczb z kolumny pierwszej i drugiej. Wyświetl zawartość tablicy zachowując układ macierzy. 2. Napisz program, który utworzy tablicę dwuwymiarową NxM, wypełni ją losowymi liczbami z przedziały <-1000, 1000> i wyznaczy taki najmniejszy przedział obustronnie domknięty , w którym zawarte będą wszystkie elementy utworzonej macierzy. 3. Zadeklaruj tablicę dwuwymiarową o wymiarach 3x4, wypełnij ją losowymi liczbami, a następnie dokonaj transponuj macierz. Wyświetl macierz przez i po operacji transponowania. #include <iostream> #include <iomanip> #include <cmath> using namespace std; int N, M; void losuj_wypisz (int **tab); void losuj (int tab[3][4]); void wypisz (int tab[3][4]); void transponuj (int tab[3][4]); int main() { int wybor; while (wybor!=4) { cout<<"Wybierz polecenie:"<<endl; cout<<"(1) Polecenie"<<endl; cout<<"(2) Polecenie"<<endl; cout<<"(3) Polecenie"<<endl; cout<<"(4) Wyjscie"<<endl; cin>>wybor; switch(wybor) { case 1: //polecenie 1 system("cls"); cout<<"Polecenie 1!"<<endl; int ile; cout<<"Ile liczb chcesz wprowadzic?"<<endl; cin>>ile; int tab[ile][3]; cout<<"Podaj "<<ile<<" liczb(y) calkowite(kazda zatwierdzajac klawiszem ENTER)"<<endl; int liczba; for (int i=0; i<ile; i++) { cin>>liczba; tab[i][0]=liczba; tab[i][1]=tab[i][0]*tab[i][0]; tab[i][2]=tab[i][0]+tab[i][1]; } cout<<endl; cout<<"Oto Twoja macierz:"<<endl; for (int i=0; i<ile; i++) { cout<<" \n"; for (int j=0; j<3; j++) { cout<<setw(4)<<tab[i][j]; } } cout<<endl; break; case 2: system("cls"); //polecenie 2 int **tab2; srand(time(NULL)); cout<<"Polecenie 2!"<<endl; losuj_wypisz(tab2); cout<<endl; break; case 3: system("cls"); //polecenie 3 int tab3[3][4]; srand(time(NULL)); cout<<"Polecenie 3!"<<endl; losuj(tab3); wypisz(tab3); cout<<endl; transponuj(tab3); cout<<endl; break; case 4: break; default: cout<<"Zly klawisz"<<endl; break; } } //system ("Pause"); return 0; } void losuj_wypisz (int **tab) { cout<<"Podaj liczbe wierszy:"<<endl; cin>>N; cout<<"Podaj liczbe kolumn:"<<endl; cin>>M; int** c=new int*[N]; for(int i=0; i<N; i++) { c[i] = new int[M]; } for (int i=0; i<N; i++) for (int j=0; j<M; j++) c[i][j]=rand()%(1000-(-1000)+1)+(-1000); for (int k=0; k<N; k++) { cout<<" \n"; for (int l=0; l<M; l++) { cout<<setw(6)<<c[k][l]; } } delete []c; } void losuj (int tab[3][4]) { for (int i=0; i<3; i++) for (int j=0; j<4; j++) tab[i][j]=rand()%(10-5+1)+5; } void wypisz (int tab[3][4]) { for (int i=0; i<3; i++) { cout<<" \n"; for (int j=0; j<4; j++) { cout<<setw(5)<<tab[i][j]; } } } void transponuj (int tab[3][4]) { int **temp= new int*[4]; for(int i=0; i<4; i++) { temp[i] = new int[3]; } for (int a=0; a<4; a++) for (int b=0; b<3; b++) temp[a][b]=tab[b][a]; for (int k=0; k<4; k++) { cout<<" \n"; for (int l=0; l<3; l++) { cout<<setw(5)<<temp[k][l]; } } } Kilka pytań mam. Po pierwsze czemu po wykonaniu jakiegoś polecenia program mi się wiesza, zamiast wrócić do menu? Kombinowałem z return 0; i system("Pause"); ale coś mi nie chce to działać Odnośnie polecenia 2: Nie bardzo wiem jak napisać funkcję wyznaczającą ten przedział? Cytuj Odnośnik do komentarza
Fenomen Napisano 7 Kwietnia 2009 Udostępnij Napisano 7 Kwietnia 2009 nie wiem, jaka jest funkcja generatora liczb pseudolosowych, ale ogolnie taki przedzial mozna zrobic w nastepujacy sposob x=random()*(max-min)+min gdzie max - gorna wartosc przedzialu min - dolna wartosc przedzialu random - generator liczb pseudolosowych czyli w Twoim przypadku to by bylo: x=random()*(1000-(-1000))-1000 czyli x=random()*(2000)-1000 oczywiscie przy zalozeniu ze random generuje liczby z zakresu (0,...,1) Cytuj Odnośnik do komentarza
og02r Napisano 7 Kwietnia 2009 Udostępnij Napisano 7 Kwietnia 2009 x=random()*(max-min)+min raczej random(max)+min Cytuj Odnośnik do komentarza
Fenomen Napisano 7 Kwietnia 2009 Udostępnij Napisano 7 Kwietnia 2009 co jezyk to inna funkcja, dlatego nie bylem pewien jak to jest w C tak jak napisalem obowiazuje dla generatora liczb z przedzialu (0,1) Cytuj Odnośnik do komentarza
Misiek Napisano 7 Kwietnia 2009 Udostępnij Napisano 7 Kwietnia 2009 Troszkę się nie zrozumieliśmy chyba, bo ja potrafię napisać funkcję losującą z przedziału <-1000,1000>. W tym konkretnym przypadku jest zawarta w funkcji losuj_wypisz(). Chodzi o napisanie funkcji wyznaczającej przedział obustronnie domknięty, w którym zawarte będą wszystkie elementy utworzonej macierzy. Cytuj Odnośnik do komentarza
Fenomen Napisano 8 Kwietnia 2009 Udostępnij Napisano 8 Kwietnia 2009 jezeli losujemy tylko liczby calkowite to mozna zrobic po prostu losowanie z przedzialu (-1001,1001) Cytuj Odnośnik do komentarza
lindros Napisano 11 Kwietnia 2009 Udostępnij Napisano 11 Kwietnia 2009 Troszkę się nie zrozumieliśmy chyba, bo ja potrafię napisać funkcję losującą z przedziału <-1000,1000>. W tym konkretnym przypadku jest zawarta w funkcji losuj_wypisz(). Chodzi o napisanie funkcji wyznaczającej przedział obustronnie domknięty, w którym zawarte będą wszystkie elementy utworzonej macierzy. Jak na mój gust, chodzi o znalezienie maksymalnego i minimalnego elementu, co jest prostym zadaniem. Cytuj Odnośnik do komentarza
Misiek Napisano 20 Kwietnia 2009 Udostępnij Napisano 20 Kwietnia 2009 Czas na tablice znakowe ZADANIE 1 Napisać funkcję zawiera(), która pobiera jako argumenty dwa wskaźniki typu char. Jeśli drugi łańcuch zawiera się w pierwszym funkcja zwraca adres pod którym rozpoczyna się ten łańcuch, jeśli drugi łańcuch nie zawiera się w pierwszym wtedy funkcja zwraca wskaźnik zerowy. Czym to porównać w zadaniu 1? Strcmp? Cytuj Odnośnik do komentarza
Misiek Napisano 23 Kwietnia 2009 Udostępnij Napisano 23 Kwietnia 2009 ma ktoś jakiś pomysł na to? Cytuj Odnośnik do komentarza
Arsen Napisano 23 Kwietnia 2009 Udostępnij Napisano 23 Kwietnia 2009 Jak najbardziej strcmp. Cytuj Odnośnik do komentarza
Fenomen Napisano 25 Kwietnia 2009 Udostępnij Napisano 25 Kwietnia 2009 czy jest tu ktos kumaty z matlaba i ma chwile czasu zeby mi napisac symulacje dzialania dwoch numerycznych metod optymalizacji? Cytuj Odnośnik do komentarza
xemi Napisano 30 Kwietnia 2009 Autor Udostępnij Napisano 30 Kwietnia 2009 C# Mam program, gdy sie on wlacza to pojawia sie ikonka na pasku zadan, sam program nie wyswietla okienka na tym pasku (program dziala w tle, wiec nie jest to potrzebne). Menu programu jest po nacisnieciu prawego klawisza myszy na owej ikonce. Mozna tam takze wlaczyc sobie okno programu gdzie mozna dokonac potrzebnych ustawien. Ale teraz do rzeczy. Potrzebuje zrobic, zeby dzialo sie cos po tym jak najade mysza na ta ikonke. Nie moge czegos takiego znalesc. Sa tylko zdazenia jak MouseClick, MouseDouble, MouseDown, MouseMove, MouseUp. Jak w takim razie zrobic zeby wykrywalo jak mysza jest na tej okonce. Drugie pytanie bedzie, jak sie z tym uporam;) Cytuj Odnośnik do komentarza
Mariolo Napisano 4 Maja 2009 Udostępnij Napisano 4 Maja 2009 Potrzebuję na zajęcia zrobić w php tak, aby plik generował tabelę kwadratów liczb od 1 do 5. Ma to być w tabelce (każda liczba w osobnej komórce): 1 1 2 4 3 9 4 16 5 25 Wiem, jak zrobić by generował liczby i kwadraty, ale za nic w świecie nie umiem tego wkomponować w tabelkę. Będę wdzięczny za pomoc. Cytuj Odnośnik do komentarza
Fikander Napisano 4 Maja 2009 Udostępnij Napisano 4 Maja 2009 <?php for ($i=0;$i<5;$i++) { $kwadrat = $i*$i; $tabela_kwadratow[] = {$i, $kwadrat} } foreach($tabela_kwadratow as $rzad) { print("$rzad[0] $rzad[1]"); } ?> Pewnie coś stentegowałem, bo nie spałem półtorej doby, ale spędziłem je właśnie nad php, więc może przypadkiem działa :P Cytuj Odnośnik do komentarza
Mariolo Napisano 4 Maja 2009 Udostępnij Napisano 4 Maja 2009 Nie działa niestety. I mi chodzi raczej z użyciem pętli while a nie foreach. Będę wdzięczny za dalszą pomoc Cytuj Odnośnik do komentarza
Arsen Napisano 4 Maja 2009 Udostępnij Napisano 4 Maja 2009 Nie mam pojęcia jak to wygląda w php, ale w C++ wystarczy zrobić pętelkę: int i = 1; while( i<=5 ) { cout << i << " " << i*i << endl; /*czyli po prostu wypisanie najpierw i, potem spacji;), a nastepnie kwadratu*/ i++; } Przerób to sobie . Cytuj Odnośnik do komentarza
Fikander Napisano 4 Maja 2009 Udostępnij Napisano 4 Maja 2009 <?php $i = 0; print("<table>"); do { $i++; $kwadrat = $i*$i; print("<tr><td>$i</td><td>$kwadrat</td></tr>"); } while($i<5); print("</table>"); ?> To już działa. Na wszelki wypadek wrzuciłem Ci wyniki w tablicę HTMLową, bo w sumie nie wiem, co miał poeta na myśli układając zadanie Cytuj Odnośnik do komentarza
Mariolo Napisano 4 Maja 2009 Udostępnij Napisano 4 Maja 2009 Dziękuję, bardzo się przydało. Właśnie o coś takiego mi chodziło, bo nie wiedziałem jak tę tabelkę ogarnąć. W zadaniu chodziło generalnie o wykorzystanie pętli while do liczenia kwadratów, a mi problem sprawiły te tabelki właśnie. Jeszcze raz dzięki. Cytuj Odnośnik do komentarza
Misiek Napisano 12 Maja 2009 Udostępnij Napisano 12 Maja 2009 Małej pomocy z rekurencją potrzebuję (C++): Napisać funkcję rekurencyjną, która oblicza xn/n! , gdzie n jest liczbą całkowitą >=0, zaś x zmienną typu double. Cytuj Odnośnik do komentarza
Fenomen Napisano 12 Maja 2009 Udostępnij Napisano 12 Maja 2009 chodzi o to zeby najpierw sobie napisac rekurencyjnie metode silni, a potem rekurencyjna wersje metody obliczajacej podane wyrazenie - w ten sposob mamy rekurencje w rekurencji (pomijam fakt efektywnosci takiego dzialania ) nie znam skladni c++, ale w javie wygladaloby to mniej wiecej tak: public class cos { private static int silnia(int n) { if (n == 0) return 1; else return n*silnia(n-1); } private static double count(int n, double x) { if (n == 0) return x; else return x/silnia(n); } public static void main(String [] args) { int n = 5; double x = 2.5; System.out.println("Policzmy wartosc dla "+n+" , "+x); System.out.println(count(n, x)); } } Cytuj Odnośnik do komentarza
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.