Skocz do zawartości

Programowanie


xemi

Rekomendowane odpowiedzi

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ć :-k

Odnośnie polecenia 2: Nie bardzo wiem jak napisać funkcję wyznaczającą ten przedział?

Odnośnik do komentarza

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)

Odnośnik do komentarza

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.

Odnośnik do komentarza
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.

Odnośnik do komentarza
  • 2 tygodnie później...

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?

Odnośnik do komentarza

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;)

Odnośnik do komentarza

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.

Odnośnik do komentarza

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.

Odnośnik do komentarza

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 :D )

 

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));
}

}

Odnośnik do komentarza

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ą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.

Ładowanie
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...