Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
C++

Program ilustrujacy sortowanie Bąbelkowe

C++

  • Zamknięty Temat jest zamknięty
20 odpowiedzi w tym temacie

#1 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 11.05.2010 20:10

Program wypelnia 6 elementowa tablice losowymi liczbami i sortuje je rosnąco metodą bąbelkowa

Spoiler

  • +
  • -
  • 1
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 11.05.2010 21:42

będę się czepiał ale dlaczego nie tak

#include <iostream>
#include <cmath>

void drukuj(int tab[]);

using namespace std;
int tablica[6];
int main()
{
srand(time(NULL));
int k=1;
cout<<"krok "<<k<<":->\t\t[";
for(int i=0;i<6;i++){
tablica[i]=rand()%1000; //wypelnienie tablicy
cout<<( (i == 5) ? tablica[6] : tablica[i])<<( (i == 5) ? "]\n" : ",")<<flush;
}
int zmienna;
for(int i=0;i<5;i++){
for (int j=5;j>i;j--)
if (tablica[j-1]>tablica[j]){ // jesli zla kolejnosc to zamien
swap(tablica[j-1],tablica[j]);
k++;
cout<<"krok "<<k<<":->\t\t"<<flush;
drukuj(tablica);
cout<<"\t\t zam: "<<tablica[j]<<" i "<<tablica[j-1]<<endl;
}

}

system("PAUSE");
}

void drukuj(int tab[]){
cout<<"[";
for(int i=0;i<6;i++){
cout<<( (i == 5) ? tablica[6] : tablica[i])<<( (i == 5) ? "]" : ",")<<flush;
}
}



@edit twoje rozwiązanie wydaje mi się teraz wydajniejsze oprócz flush i swap one są potrzebne

Użytkownik DarkGL edytował ten post 11.05.2010 21:47

  • +
  • -
  • 0

#3 G[o]Q

    I'm G[o]Q

  • Autor tematu
  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 11.05.2010 22:07

nie wiem co to flush a ten program pisalem na PSiO na lekcje i mial byc tylko modul iostream :D
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#4 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 11.05.2010 22:23

strumienie buforowane i nie buforowane
flush to prawie jak endl z tym że endl przenosi dodatkowo do nowej lini
  • +
  • -
  • 0

#5 G[o]Q

    I'm G[o]Q

  • Autor tematu
  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 12.05.2010 08:04

spoko :D sprawdze czy cmath dziala na macintoshach :D
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#6 kur3k

    Założyciel forum ;)

  • Przyjaciel

Reputacja: 29
Życzliwy

  • Postów:134
  • Imię:Konrad
  • Lokalizacja:Szczecin
Offline

Napisano 13.05.2010 15:09

Nie znam C++, jednak nie widzę czyszczenia zmiennych po zwróceniu wyniku ;)
  • +
  • -
  • 0

#7 G[o]Q

    I'm G[o]Q

  • Autor tematu
  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 13.05.2010 16:21

hmm a po co :?: skoro zamienione zostana elementy tablicy tylko i nic wiecej:?:
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#8 kur3k

    Założyciel forum ;)

  • Przyjaciel

Reputacja: 29
Życzliwy

  • Postów:134
  • Imię:Konrad
  • Lokalizacja:Szczecin
Offline

Napisano 13.05.2010 16:53

Kompilator C++ nie czyści zmiennych, a więc te dane będą zaśmiecać Ci pamięć - powinno się czyścic zmienne :spadowa:
  • +
  • -
  • 0

#9 G[o]Q

    I'm G[o]Q

  • Autor tematu
  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 13.05.2010 17:07

duzo bedzie tej pamieci zajetej :spadowa:

1 zmienna temp a po zastosowaniu swap to nie pozostaje zadna pamiec nie uzyta bo operuje to na 1 tablicy oczywiscie mozna usunac potem ta tablice tylko nie wiem po co :D
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#10 kur3k

    Założyciel forum ;)

  • Przyjaciel

Reputacja: 29
Życzliwy

  • Postów:134
  • Imię:Konrad
  • Lokalizacja:Szczecin
Offline

Napisano 13.05.2010 17:22

Piszę jak jest :spadowa:
  • +
  • -
  • 0

#11 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 13.05.2010 18:31

Jestem całkiem pewny, że tylko przy użyciu new, malloc (dynamiczne zmienne) wymagają ręcznego usuwania. Zwykle zmienne zostają usunięte (lub coś podobnego) gdy program, funkcja, pętla ( blok pomiędzy { } ?) zostanie zakończona :unsure:
  • +
  • -
  • 0

#12 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 13.05.2010 18:45

można to sprawdzić... próbując uzyskać dostęp do zmiennej poza funkcją lub pętlą.
wg mnie nie powinno się to udać (czyli wszystko ok)
  • +
  • -
  • 0

#13 G[o]Q

    I'm G[o]Q

  • Autor tematu
  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 14.05.2010 07:32

pav dokladnie to jest tak ze smieci sa usuwane z pamieci jak nie sa potrzebne kompilator to podstepna bestia i jesli masz tablice uzyjesz jej raz to potem kompilator nie odnotowuje jej wystapienia wiec wtedy tablica jest usunieta raczej

jest to tak jak ze zmiennymi lokalnymi w funkcjach ktore przepadaja gdy juz nie sa potrzebne czyli funkcja sie konczy
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#14 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 14.05.2010 14:50

zobaczcie sobie ten kod i sprawcie co wam zwróci ;):


#include <iostream>

int x = 0;

int main()
{
std::cout << "x = " << x << "\n";
int x = 7;
std::cout << "x = " << x << "\n";
for (int i = 0; i < 2; i++)
{
double x = 11.11;
std::cout << "x = " << x << "\n";
}
std::cout << "lokalne x = " << x << "\n";
std::cout << "globalne x = " << ::x << "\n";
}

  • +
  • -
  • 0

#15 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 14.05.2010 16:23

Błąd kompilacji, bo nie mogą istnieć równocześnie zmienne o tej samej nazwie?
  • +
  • -
  • 0

#16 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 14.05.2010 16:42

kompiluje się bez problemu :)

jako że niektórzy nie mają kompilatora c++
podaje wynik :
x = 0
x = 7
x = 11.11
x = 11.11
lokalne x = 7
globalne x = 0

Użytkownik DarkGL edytował ten post 15.05.2010 10:47

  • +
  • -
  • 0

#17 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 14.05.2010 17:22

O.o

Sprawdziłem i faktycznie... czyli teoretycznie mogę mieć program z tysiącem zmiennych i każda może się nazywać x i nie będzie problemu?? Wolałbym jednak dostać chociaż warning :wstyd:
  • +
  • -
  • 0

#18 kur3k

    Założyciel forum ;)

  • Przyjaciel

Reputacja: 29
Życzliwy

  • Postów:134
  • Imię:Konrad
  • Lokalizacja:Szczecin
Offline

Napisano 14.05.2010 19:48

Funkcja lokalna x nie jest tym samym co funkcja globalna ( lokalna działa tylko w jakimś bloku np funkcja ), dlatego pewnie są dwie takie same ;)
  • +
  • -
  • 0

#19 G[o]Q

    I'm G[o]Q

  • Autor tematu
  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 15.05.2010 22:29

bo x zadeklarowal przed main :P i ma ona wart 0 przez caly czas trwania programu a w funkcji zadeklarowal 2 zmienna ktora ma miejsce w pamieci w ogóle gdzies indziej i pokazal wam zjawisko przeslaniania zmiennych :D
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#20 kur3k

    Założyciel forum ;)

  • Przyjaciel

Reputacja: 29
Życzliwy

  • Postów:134
  • Imię:Konrad
  • Lokalizacja:Szczecin
Offline

Napisano 16.05.2010 00:44

W Python 2.6 można wykonać to tak
# -*- coding: utf-8 -*-

x = 2

def f():
x = 8
return x

print x
print f()
Zwraca 2, 8
# -*- coding: utf-8 -*-

x = 2

def f():
global x
x = 8
return x

print f()
print x
Zwraca 8,8
# -*- coding: utf-8 -*-

x = 2

def f():
global x
x = 8
return x

print x
print f()
Zwraca 2,8

;)
  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: C++

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych