Ошибка чтения неинициализированной переменной - PullRequest
0 голосов
/ 15 февраля 2012

Программа для нахождения суммы цифр числа.

Скомпилированный код выдает ошибку:

runtime failure:variable 'z' is being used without being initialized.

Если я инициализирую 'z', это не удалит исходное значениеиз z?

введите код здесь

#include<iostream>

#include<cmath>
#include<string>
#include<iomanip>
using namespace std;
class sumd
{
int x;
  public:
void getdata()
{
    int z=0;
    cout<<"enter the no";
cin>>x;
z=x;
};
void sumdigit()
{
int z,y,sume,temp;             // this is the line with the error...
for(temp=z;temp>0;temp/=10)
{
    y=temp%10;
sume+=y;
}
cout<<sume;

};
};
  int main()
  {
  sumd s1;
   s1.getdata();
   s1.sumdigit();
   return 0;
      }

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

Я думаю, проблема в том, что в этом методе:

void sumdigit()
{
    int z,y,sume,temp;             // this is the line with the error...
    for(temp=z;temp>0;temp/=10)
    {
        y=temp%10;
        sume+=y;
    }
    cout<<sume;
}

Вы не указали значение для z или y; они неинициализированные локальные переменные. Я думаю, что вы, вероятно, намеревались сделать z и y членами данных включающего класса. Попробуйте переместить определение этих переменных за пределы этого метода и посмотрите, исправляет ли это что-то.

Надеюсь, это поможет!

0 голосов
/ 15 февраля 2012

На данный момент нет «исходного» значения для z.Я предполагаю, что вы думаете, что значение z в функции getdata будет сохранено?Ну, это не так.Вы должны вернуть значение z из функции и передать его функции sumdigit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...