Dynamicznie alokowana pamięc o podanym przez uzytkownika rozmiarze
Ostatnio zmodyfikowano 2017-03-28 23:15
woxik Temat założony przez niniejszego użytkownika |
Dynamicznie alokowana pamięc o podanym przez uzytkownika rozmiarze » 2017-03-28 00:54:25 Witam wszystkich serdecznie ! Ostatnio na zajęciach dostałem, że mam napiasć program dynamicznie alokujacy pamięć o podanym przez uzytkownika rozmiarze gdzie elementami sa liczby typu int. A pozniej tak stworzona tablice wypełnić randomowymi liczbami. A na koniec uzywajac dodatkowej zmiennej wskaznikowej iterowac po zaalokowanym obszarze pamieci zamieniajac miejscami wszystkie elementy, dla ktorym biezacy element jest wiekszy od nastepnego. Doszedlem do czegos takiego i w teorii zamienia ale na calkiem inne liczby i moje pytanie brzmi co źle robie, co powinienem zmienic ?
#include "stdafx.h" #include <iostream> #include <cstdlib> #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <time.h>
using namespace std;
void swapper( int * p_a, int * p_b ) { int temp = * p_a; * p_a = * p_b; * p_b = temp; return; } int main() { int iMax; int rozmiar_tablicy; int wartosc; cout << "Max: "; cin >> iMax; cout << "Podaj rozmiar pamieci" << "\n"; cin >> rozmiar_tablicy; cout << "stworzono tablice zlozonej z " << rozmiar_tablicy << "elementow" << "\n"; int * liczba; liczba = new int[ rozmiar_tablicy ]; for( int i = 0; i < rozmiar_tablicy; i++ ) { srand(( int ) time( NULL ) ); wartosc = rand() % iMax; liczba[ i ] = wartosc; int podst = liczba[ i ]; int wieksza = liczba[ i + 1 ]; if( podst > wieksza ) { swapper( & wieksza, & podst ); } cout << podst << "|" << wieksza << endl; } delete[] liczba; system( "PAUSE" ); }
|
|
Bielan |
» 2017-03-28 13:02:40
srand(( int ) time( NULL ) ); |
Wywołuj tylko raz przy starcie aplikacji. Przemyśl jeszcze raz algorytm. Wypełniasz tablicę i edytujesz jednocześnie. Spróbuj najpierw to rozbić na dwa przebiegi i wypisuj sobie co się dzieje z twoją tablicą. |
|
woxik Temat założony przez niniejszego użytkownika |
» 2017-03-28 23:15:51 z srand juz zmienilem : ) dziekuje za rade. A mówiąc ze edytuje to chodzi o swapper ? EDIT: ogolnie to rozumiem caly zamysł ale gubię się jak widze ze petla for wrzuca do tablicy tyle liczb ile zostalo podanej pamieci. I tutaj problemem jest to, ze wyswietlic poprawnie moge liczba (bedzie ona z przedzialu ktory podalem wyzej ) ale jakbym chcial kolejny element czyli liczba[i+1] wyswietlic w tej petli to wtedy pojawia mi sie liczba kompletnie nie z przedzialu ktory zostal wskazany wyzej. Jakas rada jak kazdy element wpisywac do innej zmiennej?EDIT 2: zrobilem, juz wszystko dziala poprawnie. Ponizej udostepniam kod jakby ktos ptorzebowal #include "stdafx.h" #include <iostream> #include <cstdlib> #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <time.h>
using namespace std;
void swapper( int * p_a, int * p_b ) { int temp = * p_a; * p_a = * p_b; * p_b = temp; return; } int main() { srand(( int ) time( NULL ) ); int iMax; int rozmiar_tablicy; int wartosc; cout << "Max: "; cin >> iMax; cout << "Podaj rozmiar pamieci" << "\n"; cin >> rozmiar_tablicy; cout << "stworzono tablice zlozonej z " << rozmiar_tablicy << "elementow" << "\n"; int * liczba; liczba = new int[ rozmiar_tablicy ]; for( int i = 0; i < rozmiar_tablicy; i++ ) { wartosc = rand() % iMax; liczba[ i ] = wartosc; } for( int i = 0; i < rozmiar_tablicy - 1; i++ ) { cout << "LICZBA 1:" << liczba[ i ] << "\n"; cout << "Liczba 2:" << liczba[ i + 1 ] << "\n"; if( liczba[ i ] > liczba[ i + 1 ] ) { swapper( & liczba[ i ], & liczba[ i + 1 ] ); } cout << "POLICZBA 1:" << liczba[ i ] << "\n"; cout << "POLiczba 2:" << liczba[ i + 1 ] << "\n"; } delete[] liczba; system( "PAUSE" ); }
|
|
« 1 » |