Anonymní profil Me – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Me – Programujte.comAnonymní profil Me – Programujte.com

 

Příspěvky odeslané z IP adresy 217.196.213.–

Supersonic
C / C++ › Graf pomocí Adjency Matrix (…
20. 3. 2016   #209355

Zdravím, mohl by mi prosím někdo vysvětlit, co se děje v konstruktoru Graph resp. v paměti po vykonání teech příkazů? Zkoušel jsem si to nakreslit, dívat se do proměných v debuggeru, ale stejně mám v tom celkem guláš.

Princip, jakým graf funguje chápu, ale nechápu to řešení pomocí pointeru na pointer...

Já jsem to pochopil tak, že první bool pointer uchovává sloupce matice a druhý pointer uchovává sloupce matice, ale předpokládám, že takhle to asi nefunguje(?)

Předem díky za odpovědi.

#include<iostream>

using namespace std;

class Graph {

private:

      bool** adjacencyMatrix;
      int vertexCount;
public:
      Graph(int vertexCount) {
            this->vertexCount = vertexCount;
            adjacencyMatrix = new bool*[vertexCount];
            for (int i = 0; i < vertexCount; i++) {
                  adjacencyMatrix[i] = new bool[vertexCount];
                  for (int j = 0; j < vertexCount; j++)
                     adjacencyMatrix[i][j] = false;
            }
      }

      void addEdge(int i, int j) {
            if (i >= 0 && i < vertexCount && j > 0 && j < vertexCount) {
                  adjacencyMatrix[i][j] = true;
                  adjacencyMatrix[j][i] = true;
            }
      }

      void removeEdge(int i, int j) {
            if (i >= 0 && i < vertexCount && j > 0 && j < vertexCount) {
                  adjacencyMatrix[i][j] = false;
                  adjacencyMatrix[j][i] = false;
            }
      }

      bool isEdge(int i, int j) {
            if (i >= 0 && i < vertexCount && j > 0 && j < vertexCount)
                  return adjacencyMatrix[i][j];
            else
                  return false;
      }

      ~Graph() {
            for (int i = 0; i < vertexCount; i++)
                  delete[] adjacencyMatrix[i];
            delete[] adjacencyMatrix;
      }
};
int main()
{
    Graph graph(5);
    graph.addEdge(1,3);
    graph.addEdge(2,3);
    graph.addEdge(4,5);
    graph.removeEdge(2,3);
    return 0;
}
Supersonic
C / C++ › Náhodné čísla a Bubble Sort
9. 2. 2016   #208514

#2 ondrej39
Děkuji mockrát!!! Mělo by to být C++, dělám to hold podle toho, jak nás to učí...

Jinak pokud by to někoho v budoucnu náhodou zajímalo, stačilo jen přidat obyčejně toto (nevím proč mě to nenapadlo):

int *newArray = new int[length];

Ještě jednou díky!

Supersonic
C / C++ › Náhodné čísla a Bubble Sort
9. 2. 2016   #208512

Zdravím, mám tuto strukturu programu, která by měla zůstat neměnná:

int* createArray(int length)
{

     // TO-DO
     return newArray;

}


void printArray(int* myArray, int length)
{

     // TO-DO

}


void bubbleSort(int* myArray, int length)
{

     // TO-DO

}


int main()
{

     int length = 10;

     // Vytvorenie nového poľa a naplnenie náhodnými hodnotami 1-100 pomocou metódy createArray
     int* myArray = createArray(length);

     // Výpis nezotriedeného poľa
     printArray(myArray, length);

     // Zotriedenie poľa
     bubbleSort(myArray, length);

     // Výpis zotriedeného poľa
     printArray(myArray, length);

}


Do části " TO-DO" mám doplnitt lastní kód. Metoda createArray(int length) má vracet pointer (ukazatel) na pole, které obsahuje náhodně vygenerované hodnoty integer v rozsahu 1-100. Délku tohto pole určuje hodnota preměnné length. Dále mám implementovat metodu printArray(int* myArray, int length), její úlohou je vypsat na obrazovku všechny hodnoty pole myArray. Nakonec implementujte triedenie bubbleSort v metodě ze szejným názvem a znovu vypsat setřídění.

Bohužel se vypisují už v původním výpisu příliš vysoká čísla (až na několik prvních) a navíc se hodnoty ani nesetřídí správně, nebo se zobrazí 0. Pokud bych měl program vytvořit sám pomocí jednoduchých cyklů, nebyl by problém, ale tady si nevím vůbec rady :-(.

Můj kód:


#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

    int* createArray(int length)
    {
        int newArray[length];
        int i;
        for (i=0; i<=length; i++){
            newArray[i] = 1+(rand()%100);
        }
        return newArray;
    }

    void printArray(int* myArray, int length)
    {
        int i;
        for( i=0; i<length; i++){
            cout << myArray[i] << endl;
        }

    }
    void bubbleSort(int* myArray, int length)
    {
        int i,j;
         for(i = 0; i < length-1; i++){
            for(j = 0; j < length-i-1; j++){
                if (myArray[j+1] < myArray[j]){
                    int cache = myArray[j+1];
                    myArray[j+1]=myArray[j];
                    myArray[j]=cache;
                }
            }
         }
    }


    int main()
    {

         int length = 10;
          srand(time(0));
         // Vytvorenie nového poľa a naplnenie náhodnými hodnotami 1-100 pomocou metódy createArray
         int* myArray = createArray(length);

         // Výpis nezotriedeného poľa
         printArray(myArray, length);

         // Zotriedenie poľa
         bubbleSort(myArray, length);
        cout << "Serazena cisla: " << endl;
         // Výpis zotriedeného poľa
         printArray(myArray, length);

    }
Kid
C / C++ › Ošetření vstupu prázdného řá…
28. 10. 2015   #205971

#3 Kid
else if (vstup[i] == '0') { výpis chyby }; ... takhle to bohužel nic nezmění
 

Kid
C / C++ › Ošetření vstupu prázdného řá…
28. 10. 2015   #205970

#2 Hajrus
To vím, ale jak to udělám? Když tam dám podmínku pokud je roven ten string '/0', chová se to stejně jako předtím...

Kid
C / C++ › Ošetření vstupu prázdného řá…
28. 10. 2015   #205968

Zdravím, potřeboval bych v programu pro převod binárního na dsetinné číslo nějak ošetřit zadávání prázdného řádku, tzn. pokud bude v konzoli prázdný řádek, aby se objevil výpis z chybou. Mám ošetřeno zadávání jiných znaků, mezery před číslem, ale nevím jak ošetřit ten prázdný řádek. Zkouším už kdoví jak dlouho, ale na nic funkčního jsem nepřišel...   

 Děkuji za pomoc!

#include<iostream>
#include<cmath>
#include<string>
using namespace std;

int main(){
cout << "Zadej cislo ve dvojkove soustave:" << endl;
char vstup[200];
char znak;
cin.getline(vstup, 200, '\n');

int i = 0;
int vypis = 0;

    while(vstup[i] != '\0' ){
        if (vstup[i] == '0' || vstup[i] == '1' ){
        vypis = 2 * vypis + vstup[i] - '0';
        ++i;
        }
        else {
            cout << "Nespravny vstup." << endl;
        return 0;
        }
    }
    cout << "Desitkove cislo je: " << vypis << endl;
    return 0;
}
Nigel Pulsford
C / C++ › Nakreslení schodů v konzoli…
14. 10. 2015   #205637

Zdravím, potřebuju vypsat v konzoli schody, které mají vypadat takto:

_
X_
XX_
XXX_

Bohužel můj výstup je takový, že se mi vypíšou všechna X hned na druhém řádku. Vím kde je chyba, ale bohužel nevím, jak to spravit, aby to bylo správně - vykoná se začátek cyklu a pak se vykoná vnořený cyklus úplně celý, čili to vypadá:

_

xxx_

_

Potřebuju ty X rozložit tak, aby na každém řádku bylo 1 X navíc k ostatním (viz. ukázka). Tak nějak do toho hledím už asi 45 minut a nenapadá mě jak ten kód spravit, popř. úplně překopat, aby se dostavil požadovaný výsledek   

#include <iostream>

using namespace std;

int main()
{
    int i;
    int j = 0;
    cout << "Zadej pocet schodu: " << endl;
    cin >> i;
    //int j = 0;
    while(i>0)
    {
        cout << "_" << endl;
        while (j<i)
        {
            j++;
            cout << "X";
        }
        i--;
    }
    return 0;
}


Předem děkuji za pomoc!

Me
Offtopic › Hackerská hádanka
26. 10. 2008   #88363

To by bylo fakt super :) ...

Me
Offtopic › Hackerská hádanka
19. 10. 2008   #87831

Veka]cze napsal:
ty dve ženske a britska vlajka mne nici. divam se an tu vlajku. mam otevrenou wiikipedi..a nic...snad vecer



Vlajka znamená, ve kterém jazyku to je. A když vidíš zrcadlový obraz, bude to anglicky co? :)

Me
Offtopic › Hackerská hádanka
18. 10. 2008   #87749

Taky nemůžu přijít na ten klikyhák ...

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý