2014-02-26 90 views
0

我希望你能幫助我。 事情是,我不知道如何改變一個變量的值,例如,我有一個 「char」變量,然後我想將它改爲「int」或「float」 這是代碼在C++中更改變量的值?

#include<iostream> 
#include<cstdlib> 
using namespace std; 

main() 
{ 
{ 
cout<<" El valor de las calificaciones es A=10,B=9,C=8,D=7,E=6,F=5,G=4,H=3,I=2,J=1 "    <<endl;} 
char calificaciones[4]; 
int resultado,A=10,B=9,C=8,D=7,E=6,F=5,G=4,H=3,I=2,J=1, i, promedio; 
for(i=1;i<4;i++) 

{ 

    cout<<"Ingrese calificacion con letra "<<i; 
    cin>>calificaciones[i]; 


} 
promedio=(calificaciones[1]+calificaciones[2]+calificaciones[3])/3; 
cout<<"El promedio de sus tres calificaciones es "<<promedio<<endl; 
system("pause"); 

} 

該程序應該要求用戶輸入三個分數,分數以字母顯示,您可以看到,A = 10,B = 9等,並且一旦用戶輸入三個字母,程序是要將它們分成三個,但由於變量「calificaciones」是一個字符串,我如何使操作我想要做到這一點,或者什麼是我可以使用的程序來理解用戶輸入的命令信件和操作將與他們一起完成? 希望你能幫助我,謝謝。

+2

「我有一個」字符串「變量」在哪裏? – Borgleader

+0

對不起,其中一個char –

+3

你不是在談論改變變量的*值*,而是在談論改變它的類型。這不是大多數語言的工作原理。您不會更改類型,您可以將一個類型的值轉換爲另一個類型的新值,並將其存儲在* different *變量中。 – meagar

回答

1

如果你原來的問題是,如何改變datatype,遺憾的是,是不可能的。

雖然,你正在努力實現可以通過std::map

來完成你的成績的創建地圖的內容。

std::map<char,int> myGrades; 
myGrades.insert (std::pair<char,int>('A',10)); 
myGrades.insert (std::pair<char,int>('B',9)); 
myGrades.insert (std::pair<char,int>('C',8)); 
myGrades.insert (std::pair<char,int>('D',7)); 

閱讀輸入:(這是相同的。僅索引從0開始)

for(i=0;i<3;i++) 
{ 
    cout<<"Ingrese calificacion con letra "<<i; 
    cin>>calificaciones[i]; 
} 

從地圖獲取實際整數。

int total_grades = (myGrades.find(calificaciones[0])->second + 
         myGrades.find(calificaciones[1])->second + 
         myGrades.find(calificaciones[2])->second); 
promedio=total_grades /3.0; //<-- NOtice 3.0 to avoid int/int 
+0

呵呵?爲什麼downvote ..? –

+0

爲什麼downvote? (不是我!)我正準備按照與此相同的方式發佈答案。 (我會說mapValueOfLetter ['A'] = 10;但總體思路相同)。 – MarkU

+0

@MarkU,但我已經解釋的方式是正確的。你想有什麼改進? –

1

這是不可能改變的變量如C++,Java等強類型語言中你需要定義一個新的變量與所需的類型,而不是數據類型。像Python和PHP這樣的弱類型語言(通常)是無類型的,可以讓你隨意混合和匹配數據類型,但在C++中是不可能的。您可以在技術上使用void pointers指向任何類型的對象,但它們不允許您更改現有變量的類型。 Here是關於強類型和弱類型的更多信息。

如果你沒事與創建一個新的變量,你可以使用轉換函數或手動數據類型之間的轉換(如果可能)。例如,它不可能將字符串「Hello World」轉換爲int,但你可以「42」修改字符串爲int。該cstdlib/stdlib.h頭提供的功能,如atof()atoi()它可以做基本的轉換(請確保您使用myString.c_str()轉換任何C++字符串的字符數組傳遞它們之前)。 stringstream也是一個非常強大的工具,可以輕鬆地將任何事物轉換爲字符串,以及其他用途。

我不太清楚你想要做什麼,而是你可以使用字符的ASCII值將它們轉換。例如,信A具有65的ASCII值,B爲66,C是67,依此類推。由於字符固有地存儲爲數字,因此您可以在不使用特殊轉換函數的情況下轉換它們。你可以一個char簡單地分配給一個int:

char ch = 'A'; 
int x = ch;   // this is an implicit conversion 
cout << x << endl; // this prints '65' 

字符正在cast爲整數。您也可以明確地將其轉換:

char ch = 'A'; 
cout << ch << endl;  // this prints 'A' 
cout << (int) ch << endl; // this prints '65' because of the explicit conversion 

它還周圍工作的其他方式:

int x = 65; 
char ch = x; 
cout << ch << endl; // this prints 'A'