Ну вот тебе еще вариант исполнения задачи На Visual C++ 2008 проверял
Код:
#include "stdafx.h"
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std ;
int _tmain(int argc, _TCHAR* argv[])
{
int i,j,d;
string a,b;
char s[10];
cout<<"Enter number: ";
cin>>a;
for(i=0;i<10;i++)
{
b=a;
d=0;
while(b.find(i+48)!=string::npos)
{
d++;
b=b.substr(b.find(i+48)+1,b.length()-b.find(i+48)+1);
}
if(d%2!=0)
{
for(j=0;(a[j]<i+48)&&(a[j]!=0);j++);
a.insert(j,itoa(i,s,10));
}
}
cout<<"Result: "<<a<<"\n";
getchar();
return 0;
}
И прошлый поправленный с ориентацией на Visual С++ 2008
Код:
#include "stdafx.h"
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std ;
int _tmain(int argc, _TCHAR* argv[])
{
char a[100],b[100];
int mas[10],i,d,y;
for(i=0;i<10;mas[i]=0,i++);
cout<<"Enter number: ";
cin>>a;
for(i=0;a[i]!=0;mas[a[i]-48]++,i++);
for(i=0;i<10;i++)
if(mas[i]%2!=0)
{
for(d=0;(a[d]!=0)&&(a[d]<i+48);b[d]=a[d],d++);
b[d]=i+48;
for(;a[d]!=0;b[d+1]=a[d],d++);
b[d+1]=a[d];
for(y=0;b[y]!=0;a[y]=b[y],y++);
a[y]=0;
}
cout<<"Result: "<<a<<"\n";
getchar();
return 0;
}
Полностью от массивов и функций все равно не избавился ) Выбирай какой нравится...