Я просматриваю MOO C о введении в C ++ и застрял в упражнении о функциях. Это упражнение посвящено программе, которая изменяет число в соответствии с тем, как оно было прочитано.
Например:
«1» читается как «один», поэтому следующее число должно быть
«11», что является читается как "два" следующее число:
"21" -> "один два и один один"
"1211" -> "один один и один два и два одного"
"111221" - > "три единицы, две двойки и одна одна"
"312211" ..... и так далее
Пользователь должен указать начальный номер и количество раз, когда мы должны выполнить эту операцию, а программа должна вывести последнее число. Как и в примере, ввод должен быть «1 5», а программа должна вывести «312211». В программе они просто попросили написать три функции для завершения кода, который они нам дали.
void ajouter_chiffre_droit(int& nombre, int chiffre);
void dire_chiffre(int& nombre, int repetitions_chiffre, int chiffre);
int lire_et_dire(int nombre);
Часть программы, которую они нам дали, такова, и мы должны заполнить три функции, указанные выше:
#include <iostream>
using namespace std;
int separer_chiffre_gauche(int& nombre)
{
int dix(1);
int temp(nombre);
while (temp >= 10) {
dix *= 10;
temp /= 10;
}
nombre %= dix;
return temp;
}
/*****************************************************
* Compléter le code à partir d'ici
*****************************************************/
void ajouter_chiffre_droit(int& nombre, int chiffre)
{
}
void dire_chiffre(int& nombre, int repetitions_chiffre, int chiffre)
{
}
int lire_et_dire(int nombre)
{
}
/*******************************************
* Ne rien modifier après cette ligne.
*******************************************/
void repeter_lire_et_dire(int& nombre, int fois)
{
while (fois-- > 0) {
nombre = lire_et_dire(nombre);
}
}
int main()
{
int nombre(1);
int fois(1);
cin >> nombre >> fois;
repeter_lire_et_dire(nombre, fois);
cout << nombre << endl;
return 0;
}
Мое решение:
void ajouter_chiffre_droit(int& nombre, int chiffre)
{
nombre *= 10 + chiffre;
}
void dire_chiffre(int& nombre, int repetitions_chiffre, int chiffre)
{
ajouter_chiffre_droit(nombre, repetitions_chiffre);
ajouter_chiffre_droit(nombre, chiffre);
}
int lire_et_dire(int nombre)
{
int nombre_temp(nombre), chiffre(0), chiffre_prec(0), rep(1), resultat(0);
chiffre_prec = separer_chiffre_gauche(nombre_temp);
do
{
chiffre = separer_chiffre_gauche(nombre_temp);
if(chiffre == chiffre_prec)
{
++rep;
}
else
{
dire_chiffre(resultat, rep, chiffre_prec);
rep = 1;
chiffre_prec=chiffre;
}
}while(nombre_temp!=0);
return resultat;
}
Функция lire_et_dire
всегда возвращает значение 0, и я не знаю, почему, если вы могли бы помочь мне, пожалуйста, будет здорово, спасибо!
Если вы не поняли, что проблема от меня «вероятно», прочтите официальный текст проблемы здесь это упражнение номер 1.