Я надеюсь, что вы можете мне помочь. Дело в том, что я не знаю, как изменить значение переменной, например, у меня есть переменная "char", а затем я хочу изменить ее на "int" или "float". Это код
#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" была первой строкой, как я могу сделать операцию, я хочу это сделать, или какая команда, которую я мог бы использовать для программы, чтобы понять, что пользователь ввел три буквы, и операция будет с ними? Надеюсь, ты поможешь мне и спасибо.
Если ваш исходный вопрос, как изменить 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
Невозможно изменить тип данных переменной на сильно типизированных языках, таких как C++, Java и т.д. Вместо этого вам нужно будет определить новую переменную с нужным типом. Слабо типизированные языки, такие как Python и PHP, (как правило) не имеют никакого значения и позволят вам смешивать и сопоставлять типы данных, как вам нравится, но это невозможно в C++. Вы можете технически использовать указатели void для указания объектов любого типа, но они не позволяют вам изменять тип существующих переменных. Вот более подробная информация о сильной и слабой типизации.
Если вы в порядке с созданием новой переменной, вы можете использовать функции преобразования или вручную конвертировать между типами данных (если это возможно). Например, невозможно преобразовать строку "Hello world" в int, но вы можете изменить строку типа "42" на int. cstdlib
/stdlib.h
предоставляет такие функции, как atof()
и atoi()
которые могут выполнять базовые преобразования (убедитесь, что вы передали любые строки C++ в массивы символов, используя myString.c_str()
прежде чем передавать их). stringstream
также является очень мощным инструментом, который легко преобразует практически любую строку в другую.
Я не совсем уверен, что вы хотите сделать, но вы можете использовать значения ASCII символов для их преобразования. Например, буква A
имеет значение ASCII 65, B
- 66, C
- 67 и так далее. Поскольку символы по сути хранятся в виде чисел, их можно преобразовать без использования специальных функций преобразования. Вы можете просто назначить char для int:
char ch = 'A';
int x = ch; // this is an implicit conversion
cout << x << endl; // this prints '65'
Символ бросается в целое число. Вы также можете явно преобразовать его:
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'