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

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

 

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

C / C++ › Vyhledání uzlu v binárním vy…
23. 6. 2014   #191337

#4 p3can
lol, errorlevel ...

C / C++ › Vyhledání uzlu v binárním vy…
23. 6. 2014   #191334

#2 p3can
lol, děláme to ve škole, jen nevím jak na to

C / C++ › Vyhledání uzlu v binárním vy…
23. 6. 2014   #191331

 Ahoj, mohl by mi někdo prosím poradit co mám špatně v tomto C++ kodu? Jde o tu metodu bool search(int), která by měla vzít uživatelem zadané číslo a zjistit zdali strom obsahuje takovýto uzel. Podle toho by měla vracet buď TRUE nebo FALSE. Bohužel při spuštění programu se nic nevrací (program se spustí, žádne chyby se neobjeví, po zadání čísla jakoby ta metoda proběhne až po ten brake ale nevrátí to ani TRUE ani FALSE). Děkuji za pomoc. 

#include <process.h>
#include <conio.h>
#include <iostream>
#include <cstdlib>
using namespace std;

class BinarySearchTree
{
    private:
        struct tree_node
        {
           tree_node* left;
           tree_node* right;
           int data;
        };
        tree_node* root;
    public:
        BinarySearchTree()
        {
           root = NULL;
        }
        void insert(int);
        bool isEmpty() const { return root==NULL; }
        bool search(int);

};

//----------------------------------------------------------
void BinarySearchTree::insert(int d)
{
    tree_node* t = new tree_node;
    tree_node* parent;
    t->data = d;
    t->left = NULL;
    t->right = NULL;
    parent = NULL;
  // is this a new tree?
  if(isEmpty()) root = t;
  else
  {
    //Note: ALL insertions are as leaf nodes
    tree_node* curr;
    curr = root;
    // Find the Node's parent
    while(curr)
    {
        parent = curr;
        if(t->data > curr->data) curr = curr->right;
        else curr = curr->left;
    }
    if(t->data < parent->data)
       parent->left = t;
    else
       parent->right = t;
  }


}

bool BinarySearchTree::search(int d) {
    tree_node* temp = root;
    while (temp != NULL) {
        if (temp->data == d) {
            return true;
        }
        else {
            if (d > temp->data) {
                temp = temp->right;
            }
            else {
                temp = temp->left;
            }
        }
    }
    return false;
}

//----------------------------------------------------------
int main()
{
    BinarySearchTree b;
    int ch,tmp,tmp1;
    while(1)
    {
       cout<<endl<<endl;
       cout<<" Binary Search Tree Operations "<<endl;
       cout<<" ----------------------------- "<<endl;
       cout<<" 1. Insertion/Creation "<<endl;
       cout<<" 2. Does BST contain this number? "<<endl;
       cout<<" 3. Exit "<<endl;
       cout<<" Enter your choice : ";
       cin>>ch;
       switch(ch)
       {
           case 1 : cout<<" Enter Number to be inserted : ";
                    cin>>tmp;
                    b.insert(tmp);
                    break;
           case 2 : cout<<" Enter number to be found : ";
                    cin>>tmp1;
                    b.search(tmp1);
                    break;
           case 3 : system("pause");
                    return 0;
                    break;
       }
    }
}
C / C++ › Rozdělení zrojáku na 2 části…
3. 1. 2014   #185908

#3 DVNanakin
#2 Kit
Neznáte náhodou nějakou stránku, která se tím zabývá?

C / C++ › Rozdělení zrojáku na 2 části…
3. 1. 2014   #185907

#2 Kit
jj, děkuju, právě na to jsem se chtěl zeptat, jen jsem nevěděl, jak to nazvat - hlavičkový soubor - zkusím o tom něco vyhledat na netu

C / C++ › Rozdělení zrojáku na 2 části…
3. 1. 2014   #185905

Dobrý den.

Pracuju v Code Blocks. Mám napsaný program uložený jako program.c. Tento zdrojový kód je ale moc dlouhý a nepřehledný, rád bych ho rozdělil na 2 části - na program1.c a program2.c. Mohli byste mi prosím napsat co se
všechno musí udělat (odkaz z 1 zdrojáku na druhý,...) abych to mohl provést? Děkuju

Anakin
C / C++ › Kalkulačka
16. 11. 2013   #183996

#6 Robo
#2 vitamin

Tak jsem to tam implementoval. Kod vypada takto (pro zjednodušení jsem tam dal jen operace + a -):

#include <stdio.h>

int main()
{
   char oper;
   double a, b;

   printf("Napiš co chceš vypočítat\n");
   scanf("%lf", &a);
   getchar();
   oper = getchar();
   scanf("%lf", &b);

   switch(oper)
   {
    case '+':
        printf("a+b=%.2f",a+b);
        break;
    case '-':
        printf("a-b=%.2f",a-b);
        break;
    default:
        printf("Error! Špatně zadaný operátor.");
        break;
   }
   return 0;
}

Takhle vypadá  výstup - příklad:

Napiš co chceš vypočítat
4 + 1
num1+num2=5.00

Chtěl bych se vás ještě zeptat jak lze udělat aby v tom výstupu místo toho num1+num2=5.00 bylo 4+1=5

To je asi všechno, co by mne k tomuto tématu ještě zajímalo. MOC díky

Anakin
C / C++ › Kalkulačka
16. 11. 2013   #183991

#3 Robo
Ahoj, děkuju za radu. Vytvářím to v .c, opravil jsem ten můj kód - teď vypadá takto

#include <stdio.h>

int main()
{
   char oper;
   double num1, num2;


   printf("Napiš co chceš vypočítat\n");
   scanf("%f%c%f", &num1, &oper, &num2);


   switch(oper)
   {
    case '+':
        printf("num1+num2=%.2f",num1+num2);
        break;
    case '-':
        printf("num1-num2=%.2f",num1-num2);
        break;
        case '*':
        printf("num1*num2=%.2f",num1*num2);
        break;
    case '/':
        if(num2 != 0)
        {
                    printf("num1/num2=%.2f",num1/num2);
            break;
        }
        else
        {
            printf("Error! Dělíte nulou.");
            break;
        }
    default:
        printf("Error! Špatně zadaný operátor.");
        break;
   }
   return 0;
}

Program se sice spustí ale neproběhne správně - konkrétně takto vypadá výstup:

Příklad výstupu:

Napiš co chceš vypočítat
4+1
num1+num2=0.00
C / C++ › Kalkulačka
16. 11. 2013   #183983

Ahoj, potřeboval bych poradit s jedním programem. Možná se vám to bude zdát jednoduché ale pro mě to rozhodně jednoduché není. 

Chci vytvořit program podobný kalkulačce. vstup je ve tvaru num1 operator num2 , kde num1 a num2 jsou čísla typu double, operator je jedním ze znaků +,-,*,/.

Toto je můj pokus o napsání toho kódu:

#include <stdio.h>
 
int main()
{
   char operator;
   double num1, num2;
 
 
   printf("Napiš co chceš vypočítat\n");
   scanf("%f%c%f", &num1, &operator, &num2);
 
 
   switch(operator);
   {
    case '+':
        printf("num1+num2=%.2f",num1+num2);
        break;
    case '-':
        printf("num1-num2=%.2f",num1-num2);
        break;
        case '*':
        printf("num1*num2=%.2f",num1*num2);
        break;
    case '/':
        if(num2 != 0)
        {
                    printf("num1/num2=%.2f",num1/num2);
            break;
        }
        else
        {
            printf("Error! Dělíte nulou.");
            break;
        }
    default:
        printf("Error! Špatně zadaný operátor.");
        break;
   }
   return 0;
}

Musím ovšem vyřešit tyto problémy, doufám, že s vaší pomocí to vyřeším:

1) Musím nějak upravit ten můj kód protože nefunguje (nelze ho spustit). Nevím proč to nefunguje. Poraďte prosím.

2) Musím vyřešit problém se zadáváním vstupu. Konkrétně mám na mysli, jak programu říct, že pokud uživatel zadá  

2.456     * 5

tak se tím myslí 2.456*5


 

Tedy že by program měl ignorovat ty mezery. Vůbec nevím, jak na to.

3) Co napsat aby pokud by uživatel zadal takový to vstup 

3

program napsal 

Chybně zadaný vstup

Byl bych moc rád kdyby mi někdo napsal ty kousky kódu, které mi chybí nebo poradil, jak je napsat abych je mohl implementovat do mého kódu. Díky

 

 

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