Witam, mam 2 zadania z podręcznika do informatyki które nie wiem jak ruszyć.. przepisze je i prosił bym o jakąś wskazówkę lub cokolwiek innego...
zad 1.
Napisz program, który znajduje wartości najczęściej występujące w jednowymiarowej tablicy 20-elementowej liczb całkowitych wylosowanych z zakresu <0.10>. Jesli takich liczb jest kilka, wówczas podaj wszystkie. natomiast jesli wszystkie wartości tablicy występują jednakowo często, to wyswietla się komunikat, ze w zbiorze nie ma wartości najczęsciej występujacych..
Potrafię napisać wszystko tylko nie potrafię jednej rzeczy, wypisać te liczby które najczęsciej występują, i liczbę ich wystąpień...
zad 2.
Napisz program zamiany i-tego wiersza z j-tą kolumną, gdzie i oraz j są odpowiednio numerami wiersza i kolumny, na których przecięciu znajduje się element maksymalny w tablicy kwadratowej o wymiarach n x n.
Tego programu to nie wiem jak zacząć....
2 zadania z podręcznika
Re: 2 zadania z podręcznika
Witam,
Odnośnie zadanie 1-szego:
Wystarczy stworzyć dodatkową tablicę tymczasową typu integer o rozmiarze 10 i odpowiednio inkrementować ją, jeżeli wystąpi jakaś liczba z przedziału od <0, do 10>
Odnośnie zadania 2-iego:
Narysuj sobie to na kartce i zobacz jak to wygląda dla np.dla tablicy kwadratowej o wymiarach (3x3). Na pewno musisz skorzystać naraz z 2 pętli oraz stworzyć tymczasową zmienną do zamiany wartości, aby nie stracić wartości aktualnych w zmiennych w tablicy. (lub też jest jeszcze inny sposób przy pomocy xor, ale to nie jest tutaj takie ważne).
Pozdrawiam
Odnośnie zadanie 1-szego:
Wystarczy stworzyć dodatkową tablicę tymczasową typu integer o rozmiarze 10 i odpowiednio inkrementować ją, jeżeli wystąpi jakaś liczba z przedziału od <0, do 10>
Odnośnie zadania 2-iego:
Narysuj sobie to na kartce i zobacz jak to wygląda dla np.dla tablicy kwadratowej o wymiarach (3x3). Na pewno musisz skorzystać naraz z 2 pętli oraz stworzyć tymczasową zmienną do zamiany wartości, aby nie stracić wartości aktualnych w zmiennych w tablicy. (lub też jest jeszcze inny sposób przy pomocy xor, ale to nie jest tutaj takie ważne).
Pozdrawiam

Re: 2 zadania z podręcznika
Co do pierwszego zadania...
Napisałem takie coś wypisuje mi ile razy liczba wystepuje w tablicy, ale nie wiem jak napisać zeby liczby się nie powtarzały, no i żeby wyświetlić też ta której liczba powtórzeń jest największa...
Code: Zaznacz cały
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
void wyswietl(int tab[20])
{
cout << "\n Wyswietlam elementy jakie zanajduja sie w tablicy\n";
for (int i=0; i<20; i++)
cout << tab[i] << " ";
cout << endl << endl;
}
void wypelnij(int tab[19])
{
cout << "Liczby z przedzialu <0.10> wylosowane: \n";
for (int i=0; i<20; i++)
tab[i] = rand()%11;
}
void zliczanie(int tab[19])
{
int ilosc;
for (int i=0; i<20; i++)
{
ilosc = 0;
for (int j=0; j<20; j++)
if (tab[i]==tab[j])
{
ilosc = ilosc+1;
}
cout << tab[i] << " wystepuje " << ilosc << " razy\n";
}
}
int main()
{
int tablica[19];
srand(time(NULL));
wypelnij(tablica);
wyswietl(tablica);
zliczanie(tablica);
getchar();
return 0;
}
Napisałem takie coś wypisuje mi ile razy liczba wystepuje w tablicy, ale nie wiem jak napisać zeby liczby się nie powtarzały, no i żeby wyświetlić też ta której liczba powtórzeń jest największa...
Re: 2 zadania z podręcznika
Code: Zaznacz cały
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int il[11] = {0};
void wyswietl(int tab[20])
{
cout << "\n Wyswietlam elementy jakie zanajduja sie w tablicy\n";
for (int i=0; i<20; i++)
cout << tab[i] << " ";
cout << endl << endl;
}
void wypelnij(int tab[20])
{
cout << "Liczby z przedzialu <0.10> wylosowane: \n";
for (int i = 0; i < 20; i++)
tab[i] = rand()%11;
}
void zliczanie(int tab[20])
{
for (int i = 0; i < 20; i++)
il[tab[i]]++;
}
void sort(int *tab)
{
for (int i = 0; i < 20 - 1; i++)
{
for (int j = 0; j < 20 - 1; j++)
if (tab[j] > tab[j+1])
{
tab[j] ^= tab[j+1];
tab[j+1] ^= tab[j];
tab[j] ^= tab[j+1];
/*
lub
int temp = tab[j];
tab[j] = tab[j+1];
tab[j+1] = temp;
*/
}
}
}
void total()
{
for (int i = 0; i < 11; i++)
cout << i << " wystepuje: " << il[i] << " razy" << endl;
}
int main()
{
int tablica[20];
srand(time(NULL));
wypelnij(tablica);
sort(&tablica[0]); // rownowazne sort(tablica); tak żeby lepiej się sprawdzało wizualnie ;)
wyswietl(tablica);
zliczanie(tablica);
total();
getchar();
return 0;
}
Re: 2 zadania z podręcznika
oo widze ze odpisales ja napisałem to przed chwila tak:
Code: Zaznacz cały
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
void wyswietl(int tab[20])
{
cout << "\n Wyswietlam elementy jakie zanajduja sie w tablicy\n";
for (int i=0; i<20; i++)
cout << tab[i] << " ";
cout << endl << endl;
}
void wypelnij(int tab[20])
{
cout << "Liczby z przedzialu <0.10> wylosowane: \n";
for (int i=0; i<20; i++)
tab[i] = rand()%11;
}
void zliczanie(int tab[20])
{
int wynik[11];
for (int i=0; i<11; i++)
{
wynik[i]=0;
}
for (int i=0; i<20; i++)
{
wynik[tab[i]]++;
}
cout << endl << endl;
int licznik=0;
int najwieksza=0;
for(int i=20; i>=0; i--)
{
for(int k=0; k<11; k++){
if(wynik[k]==i){
cout << "Najwieksza liczba to " << k << " wystapila " << i << " razy " << endl;
najwieksza=1;
licznik++;
}
}
if(najwieksza==1)
{
if(licznik>1)
{
cout << licznik << " liczby maja maksymalna wartosc" << endl;
}else{
cout << "1 liczba ma maksymalna wartosc" << endl;
}
break;
}
}
}
int main()
{
int tablica[19];
srand(time(NULL));
wypelnij(tablica);
wyswietl(tablica);
zliczanie(tablica);
getchar();
return 0;
}
Re: 2 zadania z podręcznika
Zawsze odpisuje
no fajnie, widzę, że dokończyłeś 
Taka sugestia, staraj się pisać czytelnie i estetycznie. Wiem, że to piszesz dla siebie etc., ale naprawdę później to wchodzi już w nawyk i nie tracisz więcej czasu, a programy są czytelne i narażasz się na mniej błędów nie tylko u siebie, ale także pracując z innymi.
Poprawiłem funkcję zliczanie, aby była czytelniejsza i zobacz różnicę:
Aha i tablica 20 elementowa to tab[20], nie tab[19];
Pozdrawiam


Taka sugestia, staraj się pisać czytelnie i estetycznie. Wiem, że to piszesz dla siebie etc., ale naprawdę później to wchodzi już w nawyk i nie tracisz więcej czasu, a programy są czytelne i narażasz się na mniej błędów nie tylko u siebie, ale także pracując z innymi.

Poprawiłem funkcję zliczanie, aby była czytelniejsza i zobacz różnicę:
Code: Zaznacz cały
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
void wyswietl(int tab[20])
{
cout << "\n Wyswietlam elementy jakie zanajduja sie w tablicy\n";
for (int i=0; i<20; i++)
cout << tab[i] << " ";
cout << endl << endl;
}
void wypelnij(int tab[20])
{
cout << "Liczby z przedzialu <0.10> wylosowane: \n";
for (int i=0; i<20; i++)
tab[i] = rand()%11;
}
void zliczanie(int tab[20])
{
int wynik[11] = {0};
for (int i = 0; i < 20; i++)
wynik[tab[i]]++;
cout << endl << endl;
int licznik = 0;
int najwieksza = 0;
for(int i = 20; i >= 0; i--)
{
for(int k = 0; k < 11; k++)
{
if(wynik[k] == i)
{
cout << "Najwieksza liczba to " << k << " wystapila " << i << " razy " << endl;
najwieksza = 1;
licznik++;
}
}
if(najwieksza == 1)
{
if(licznik > 1)
cout << licznik << " liczby maja maksymalna wartosc" << endl;
else
cout << "1 liczba ma maksymalna wartosc" << endl;
break;
}
}
}
int main()
{
int tablica[20];
srand(time(NULL));
wypelnij(tablica);
wyswietl(tablica);
zliczanie(tablica);
getchar();
return 0;
}
Aha i tablica 20 elementowa to tab[20], nie tab[19];
Pozdrawiam
