[C++] Tablice dynamiczne
[C++] Tablice dynamiczne
1.
Napisz program, który utworzy n-elementową tablicę dynamiczną, gdzie n jest wartością podaną przez użytkownika, wypełni ją liczbami rzeczywistymi, również podanymi przez użytkownika, a następnie skopiuje do nowo utworzonej tablicy dynamicznej tylko te liczby które są większe od 0.
2.
Napisz program, który utworzy dwie kwadratowe tablice dynamiczne o rozmiarze podanym przez użytkownika, wypełni je losowymi liczbami z przedziału (1,9), a następnie wyświetli informację o liczbie elementów, które stoją na tych samych pozycjach w obu tablicach i mają te same wartości.
Napisz program, który utworzy n-elementową tablicę dynamiczną, gdzie n jest wartością podaną przez użytkownika, wypełni ją liczbami rzeczywistymi, również podanymi przez użytkownika, a następnie skopiuje do nowo utworzonej tablicy dynamicznej tylko te liczby które są większe od 0.
2.
Napisz program, który utworzy dwie kwadratowe tablice dynamiczne o rozmiarze podanym przez użytkownika, wypełni je losowymi liczbami z przedziału (1,9), a następnie wyświetli informację o liczbie elementów, które stoją na tych samych pozycjach w obu tablicach i mają te same wartości.
-
- Użytkownik
- Posty: 106
- Rejestracja: 17 gru 2012, o 23:56
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 7 razy
- Pomógł: 31 razy
[C++] Tablice dynamiczne
Kod: Zaznacz cały
#include<iostream>
using namespace std;
int main()
{
int *a,*b,n,pom=0;
cin >> n;
a=new int[n];
for(int i=0;i!=n;i++)
{
cin>>a[i];
if(a[i]>0)
pom++;
}
b=new int[pom];
for(int i=0,c=0;i!=n;i++)
{
if(a[i]>0)
{
b[c]=a[i];
c++;
}
}
delete [] a;
delete [] b;
return 0;
}
Kod: Zaznacz cały
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
srand(time(NULL));
int **a,**b,n,pom=0;
cin >> n;
a=new int*[n];
b=new int*[n];
for(int i=0;i!=n;i++)
{
a[i]=new int[n];
b[i]=new int[n];
}
for(int i=0;i!=n;i++)
for(int j=0;j!=n;j++)
{
a[i][j]=rand()%10;
b[i][j]=rand()%10;
if(a[i][j]==b[i][j])pom++;
}
cout<<pom;
return 0;
}
-
- Użytkownik
- Posty: 106
- Rejestracja: 17 gru 2012, o 23:56
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 7 razy
- Pomógł: 31 razy
[C++] Tablice dynamiczne
No to zamień to
na to
Kod: Zaznacz cały
if(a[i]>0)
{
b[c]=a[i];
c++;
}
Kod: Zaznacz cały
if(a[i]>0)
{
b[c]=a[i];
cout<<b[c]<<" ";
c++;
}
[C++] Tablice dynamiczne
dziękuje bardzo Pomógł poleciał !
-- 13 mar 2013, o 22:32 --
Zadeklaruj liczbę uczniów w klasie,uwzględnij pola nazwisko,wiek,wzrost.Napisz funkcje umożliwiające:
-utworzenie listy
-dodanie danych do listy
-usunięcie z listy wskazanego ucznia
-posortowanie uczniów wg wzrostu
-usuniecie listy
to kolejne zadanie - napisałem program, ale nie sortuje mi wgl.
-- 13 mar 2013, o 22:32 --
Zadeklaruj liczbę uczniów w klasie,uwzględnij pola nazwisko,wiek,wzrost.Napisz funkcje umożliwiające:
-utworzenie listy
-dodanie danych do listy
-usunięcie z listy wskazanego ucznia
-posortowanie uczniów wg wzrostu
-usuniecie listy
to kolejne zadanie - napisałem program, ale nie sortuje mi wgl.
Kod: Zaznacz cały
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class ListaUczniow{
private:
struct Uczen{
string imie;
string nazwisko;
double wzrost;
int wiek;
};
vector <Uczen> uczniowie;
string ZamienNaMale(string wyraz){
for(int i = 0; i < wyraz.length(); i++){
wyraz[i] = tolower(wyraz[i]);
}
return wyraz;
};
public:
void DodajUcznia(){
Uczen nowy;
cout<<"---DODAWANIE UCZNIA---"<<endl;
cout<<"Podaj imie:"<<endl;
cin>>nowy.imie;
cout<<"Podaj nazwisko:"<<endl;
cin>>nowy.nazwisko;
cout<<"Podaj wzrost:"<<endl;
cin>>nowy.wzrost;
cout<<"Podaj wiek:"<<endl;
cin>>nowy.wiek;
uczniowie.push_back(nowy);
};
void StworzListe(){
uczniowie.clear();
char wybor;
do{
system("cls");
cout<<"---TWORZENIE LISTY UCZNIOW---"<<endl;
cout<<"Dodac nowego ucznia?(t/n)"<<endl;
cin>>wybor;
if(wybor == 't' || wybor == 'T') DodajUcznia();
}while(wybor != 'n' && wybor != 'N');
};
void UsunUcznia(){
Uczen dokasacji;
cout<<"---USOWANIE UCZNIA---"<<endl;
cout<<"Podaj imie:"<<endl;
cin>>dokasacji.imie;
cout<<"Podaj nazwisko:"<<endl;
cin>>dokasacji.nazwisko;
for(int i = 0; i < uczniowie.size(); i++){
if(ZamienNaMale(uczniowie[i].imie) == ZamienNaMale(dokasacji.imie) && ZamienNaMale(uczniowie[i].nazwisko) == ZamienNaMale(dokasacji.nazwisko) ){
uczniowie.erase(uczniowie.begin() + i);
break;
}
}
};
void UsunListe(){
uczniowie.clear();
};
void SortujWgWzrostuOdMin()
{
int dalej=1;
while (dalej)//sortuj az wszystko posortowane
{
dalej=0;
for (int i=0;i<uczniowie.size()-1 ;i++ )
{
if(uczniowie[i+1].wzrost < uczniowie[i].wzrost)
{
Uczen temp = uczniowie[i];
uczniowie[i] = uczniowie[i+1];
uczniowie[i+1] = temp;
dalej=1;
}
}
}
};
void SortujWgWzrostuOdMax(){
bool sortowane = true;
while(sortowane){
sortowane = false;
for(int i = 0; i < uczniowie.size()-1; i++){
if(uczniowie[i+1].wzrost > uczniowie[i].wzrost){
Uczen temp = uczniowie[i];
uczniowie[i] = uczniowie[i+1];
uczniowie[i+1] = temp;
sortowane = true;
}
}
}
};
void SortujWgWiekuOdMin(){
bool sortowane = true;
while(sortowane){
sortowane = false;
for(int i = 0; i < uczniowie.size()-1; i++){
if(uczniowie[i+1].wiek < uczniowie[i].wiek){
Uczen temp = uczniowie[i];
uczniowie[i] = uczniowie[i+1];
uczniowie[i+1] = temp;
sortowane = true;
}
}
}
};
void SortujWgWiekuOdMax(){
bool sortowane = true;
while(sortowane){
sortowane = false;
for(int i = 0; i < uczniowie.size()-1; i++){
if(uczniowie[i+1].wiek > uczniowie[i].wiek){
Uczen temp = uczniowie[i];
uczniowie[i] = uczniowie[i+1];
uczniowie[i+1] = temp;
sortowane = true;
}
}
}
};
void WyswietlListe(){
for(int i = 0; i < uczniowie.size(); i++){
cout<<"---UCZEN NR "<<(i+1)<<":"<<endl;
cout<<"IMIE: "<<uczniowie[i].imie<<endl;
cout<<"NAZWISKO: "<<uczniowie[i].nazwisko<<endl;
cout<<"WIEK: "<<uczniowie[i].wiek<<endl;
cout<<"WZROST: "<<uczniowie[i].wzrost<<endl<<endl;
};
cin.ignore();
cin.get();
};
};
int main(){
ListaUczniow listauczniow;
bool koniec = false;
while(!koniec){
system("cls");
cout<<"----MENU----"<<endl;
cout<<"0.Wyswietl liste uczniow\n"
<<"1.Stworz liste od nowa\n"
<<"2.Dodaj nowego ucznia\n"
<<"3.Usun ucznia\n"
<<"4.Sortuj od najmniejszego do najwiekszego\n"
<<"5.Sortuj od najwiekszego do najmniejszego\n"
<<"6.Sortuj od najmlodszego do najstarszego\n"
<<"7.Sortuj od najstarszego do najmlodszego\n"
<<"8.Usun Liste\n"
<<"X.Wyjdz z programu\n";
char wybor;
cin>>wybor;
switch(wybor){
case '0': listauczniow.WyswietlListe(); break;
case '1': listauczniow.StworzListe(); break;
case '2': listauczniow.DodajUcznia(); break;
case '3': listauczniow.UsunUcznia(); break;
case '4': listauczniow.SortujWgWzrostuOdMin(); break;
case '5': listauczniow.SortujWgWzrostuOdMax(); break;
case '6': listauczniow.SortujWgWiekuOdMin(); break;
case '7': listauczniow.SortujWgWiekuOdMax(); break;
case '8': listauczniow.UsunListe(); break;
case 'X': koniec = true; break;
case 'x': koniec = true; break;
}
}
}
-
- Użytkownik
- Posty: 106
- Rejestracja: 17 gru 2012, o 23:56
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 7 razy
- Pomógł: 31 razy
[C++] Tablice dynamiczne
Hmm, trochę za duży kod jak dla mnie do analizy, ale jak chcesz jak najszybciej posortować dodajesz po prostu biblioteke
dodajesz dane do wektora a pozniej sortujesz to co chcesz w tym wektorze za pomocą:
Kod: Zaznacz cały
#include <algorithm>
Kod: Zaznacz cały
sort(nazwa_wektora.begin(),nazwa_wektora.end();
-
- Użytkownik
- Posty: 145
- Rejestracja: 16 lis 2007, o 09:06
- Płeć: Mężczyzna
- Lokalizacja: Gniezno
- Podziękował: 2 razy
- Pomógł: 27 razy
[C++] Tablice dynamiczne
Zastanów się nad tym kawałkiem Twojego kodu jeszcze.
Warunkiem zakończenie sortowania nie jest jednokrotne przelecenie przez pętle for, zastanów się dlaczego. Wybierz sobie któreś
Ewentualnie możesz nie podmieniać struktur a wartości w nich zawarte
Kod: Zaznacz cały
wybor != 'n' && wybor != 'N'
Ewentualnie możesz nie podmieniać struktur a wartości w nich zawarte
Kod: Zaznacz cały
swap(struktura1.a,struktura2.a);