2016-03-30 18 views
0
#include <iostream> 
using namespace std; 

void main() 
{ 

    int numDays; 
    double sum = 0; 
    double avg; 
    cout << "Enter the number of days of sales"; 
    cin >> numDays; 
    double *Sales = new double[numDays]; 

    for (int i = 0; i < numDays; i++) 
    { 
     cout << "enter how much you sold for day " << i << endl; 
     cin>>*Sales; 

     sum = sum + *Sales; 

     cout << Sales; 
    } 

    delete[] Sales; 
    avg = sum/(numDays); 
    cout << "the sum is" << sum << endl; 
    cout << "the avg is" << avg << endl; 
} 

Merhaba, aldığım çıkış, işaretçinin neden artırılmasının gerekmediğini açıklayabilir mi? ve işaretçilerle aynı işi yapmanın uygun yolu.diziler dinamik C++

Enter the number of days of sales2 
enter how much you sold for day 0 
1 
0050CD70enter how much you sold for day 1 
2 
0050CD70the sum is3 
the avg is1.5 
Press any key to continue . . . 

cevap

0

Bunu yapmak için birkaç stil vardır. Şunları yapabilirsiniz diziye kendisine endeksi ya:

double *Sales = new double[numDays]; 
for (int i = 0; i < numDays; i++) 
{ 
    cout << "enter how much you sold for day " << i << endl; 
    cin >> Sales[i]; 
    sum = sum + Sales[i]; 
} 

Yoksa orijinal pointer bir kopyasını tutmak emin olarak bir işaretçi ilerletebilir. Bir sonraki örnekte, p'un hedefi, Sales indeksleri boyunca sürünür.

double *Sales = new double[numDays]; 
double *p = Sales; 
for (i = 0; i < numDays; i++) 
{ 
    cout << "enter how much you sold for day " << i << endl; 
    cin >> *(p++); 
} 

(Teknik olarak parantez *(p++) gerekli değildir (! O new ile oluşturulmamış beri emin değilp üzerinde delete kullandığınızdan emin olun), ve aslında kullandığı kod çok şey var Bunun yerine *p++.

+0

hey neden ama neden >> >> (p ++); Bu dizin 1'e gitmez mi? – CanyoucSharp

+0

Her zaman '* (p ++)' yürütüldüğünde 'p',' Satış''daki bir sonraki hafıza adresini gösterecek şekilde artırılır. Eğer 'i 'günlerinde' * (p ++) 'yaparsanız,' Satış’a girdiniz. Bu bize "değişmez" bir "Satış" - P == i "verir, kod snippet'inde her zaman yazılı olan bir denklemdir. Ancak diğer kişilerin kodlarını okurken işaretçiler takip etmek biraz zor. Bu yüzden sadece Satış [i] 'sözdizimini kullanmanızı öneriyorum. –

+0

Çok teşekkür ederim! – CanyoucSharp