После реализации программы часть вывода на экран заполняется ненужными символами
Здраствуйте, мне дано задание по переводу чисел от 1 до 999 в римские цифры! Решение я осуществлял через методы для перевода единиц, десятков и сотен. Знаю, что это не самое лучшее решение. Так вот, при реализации кода перед вторым выводом полученного числа появляются случайные символы и я не могу понять почему! Помогите пожалуйста! Мой код:
#include <stdio.h>
#include <conio.h>
void hundreds(int a,char b[60]){
if (a == 1){
printf("C");
strcat(b,"C");
}
if (a == 2){
printf("CC");
strcat(b,"CC");
}
if (a == 3){
printf("CCC");
strcat(b,"CCC");
}
if (a == 4){
printf("CCCC");
strcat(b,"CCCC");
}
if (a == 5){
printf("D");
strcat(b,"D");
}
if (a == 6){
printf("DC");
strcat(b,"DC");
}
if (a == 7){
printf("DCC");
strcat(b,"DCC");
}
if (a == 8){
printf("DCCC");
strcat(b,"DCCC");
}
if (a == 9){
printf("CM");
strcat(b,"CM");
}
}
void dozens(int a,char b[]){
if (a == 1){
printf("X");
strcat(b,"X");
}
if (a == 2){
printf("XX");
strcat(b,"XX");
}
if (a == 3){
printf("XXX");
strcat(b,"XXX");
}
if (a == 4){
printf("XXXX");
strcat(b,"XXXX");
}
if (a == 5){
printf("L");
strcat(b,"L");
}
if (a == 6){
printf("LX");
strcat(b,"LX");
}
if (a == 7){
printf("LXX");
strcat(b,"LXX");
}
if (a == 8){
printf("LXXX");
strcat(b,"LXXX");
}
if (a == 9){
printf("XC");
strcat(b,"XC");
}}
void units(int a, char b[]){
if (a == 1){
printf("I");
strcat(b,"I");
}
if (a == 2){
printf("II");
strcat(b,"II");
}
if (a == 3){
printf("III");
strcat(b,"III");
}
if (a == 4){
printf("IV");
strcat(b,"IV");
}
if (a == 5){
printf("V");
strcat(b,"V");
}
if (a == 6){
printf("VI");
strcat(b,"VI");
}
if (a == 7){
printf("VII");
strcat(b,"VII");
}
if (a == 8){
printf("VIII");
strcat(b,"VIII");
}
if (a == 9){
printf("IX");
strcat(b,"IX");
}
}
void main()
{
char result[100];
int a[4];
int i;
int num;
printf("Enter your number from 1 to 999\n");
scanf("%d",&num);
while(num < 1 || num > 999){
printf("ERROR\n");
scanf("%d",&num);
}
for (int i = 0; num; num/=10){
a[i++] = num%10;
}
for (i = 2; i < 3; i++) {
hundreds(a[i],result);
}
for (i = 1; i < 2; i++) {
dozens(a[i],result);
}
for (i = 0; i <1; i++) {
units(a[i],result);
}
printf("\n");
puts(result);
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Инициализируйте массив
char result[100] = {0};
Ну, и хотя бы не объявляйте main() как void. Хотя проблема и не в этом...