Изменить значение переменной в C ++?

0

Я надеюсь, что вы можете мне помочь. Дело в том, что я не знаю, как изменить значение переменной, например, у меня есть переменная "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" была первой строкой, как я могу сделать операцию, я хочу это сделать, или какая команда, которую я мог бы использовать для программы, чтобы понять, что пользователь ввел три буквы, и операция будет с ними? Надеюсь, ты поможешь мне и спасибо.

  • 2
    "у меня есть переменная" строка "где?
  • 0
    Извините, это символ
Показать ещё 4 комментария
Теги:
for-loop
variables

2 ответа

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
    да? почему понизить ..?
  • 0
    Почему отрицательный голос? (Это был не я!) Я собирался опубликовать ответ в том же духе, что и этот. (Я бы сказал mapValueOfLetter ['A'] = 10; но та же самая общая идея).
Показать ещё 4 комментария
1

Невозможно изменить тип данных переменной на сильно типизированных языках, таких как 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'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню