2014-02-26 91 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'