Как исправить ошибку?

Forumhelp

Предупреждение 5 warning C4700: использована неинициализированная локальная переменная "a" 93строчка
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
struct unit
{
    int k;
    unit *left, *right;
};
void push(int a,unit **tr)
{
    if (*tr==NULL) 
    {
        *tr=new unit;
        (*tr)->k=a; 
        (*tr)->left=(*tr)->right=NULL; 
        return; 
    }
    if (a>(*tr)->k) 
        push(a,&(*tr)->right);
    else 
        push(a,&(*tr)->left);
}
void disp(unit *tr,int lvl)
{
    if(tr)
    {
        disp(tr->left,lvl + 1);
        for(int i=0; i<lvl; i++) 
            printf("  ");
        printf("%i\n",tr->k);
        disp(tr->right,lvl + 1);
    }
}
 
 
 
void delnode(unit *tree, unit **secondtree,int c)
{
    if(c!=tree->k)
        push(tree->k,secondtree);
    if(tree->left!=NULL)
        delnode(tree->left,secondtree,c);
    if(tree->right!=NULL)
        delnode(tree->right,secondtree,c);
}
 
void printmax(unit *tr,int c)
{
    if(tr==NULL)
        return;
    if(tr->left!=NULL)
        printmax(tr->left,c);
    if(tr->right!=NULL)
        printmax(tr->right,c);
    if(tr->left==NULL&&tr->right==NULL)
        return;
    else if (tr->k>c)
    {
        printf("%i ",tr->k);
        return;
    }   
}
 
void del(unit *tr)
{
    if(tr==NULL)
        return;
    if((tr)->left!=NULL)
        del((tr)->left);
    if((tr)->right!=NULL)
        del((tr)->right);
    delete tr;
}
 
void main()
{   
    
    setlocale(0,"Russian");
    unit *start=NULL, *fin=NULL;
    
int n;
 
int a;
 
printf("введите количество элементов ");
scanf("%i",&n);
 
for (int i=0; i<n; ++i) {
printf("Введитете число \n");
scanf("%i",&n);
push(a,&start);
}
    printf("Дерево:\n");
    disp(start,0);
    int key;
    printf("\nВведите значение: ");
    scanf("%i",&key);
    printf("\n");
    printmax(start,key);
    printf("\nВведите узел для удаления: ");
    int kd;
    scanf("%i",&kd);
    delnode(start,&fin,kd);
    disp(fin,0);
    del(start);
    del(fin);
    _getch();       
}
5 ответов

Forumhelp

Это не ошибка, а предупреждение. И вашем случае вполне уместное. Посмотрите внимательней на строку 92.


Forumhelp

scanf("%i",&a); так??


Forumhelp

Ну по поводу "a", да.


Forumhelp

О ну вроде работает)) Может будут какие-то замечания?)


Forumhelp

1. Не используемые хедера. 2. После "if (cond) ruturn;" не имеет смылска писать "else if(other cond)", можно просто if(other cond); 3. Форматирование.