02.10.2010, 19:30 | #1 (permalink) |
Новичок
Регистрация: 02.10.2010
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Целочисленная арифметика
Написать программу, которая для заданного натурального числа добавляет в запись числа минимальное количество цифр так, чтобы количество повторений каждой цифры в записи числа было четно так, чтобы полученное число было минимальным. ну, или хотя б разобраться с условием помогите! плизз! |
02.10.2010, 19:30 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Я уверен, что проблема будет решаться гораздо быстрее если побольше узнать о ней Задача-Паскаль. Длинная арифметика. Целочисленная прямоугольная матрица |
03.10.2010, 19:02 | #2 (permalink) |
Member
Регистрация: 07.06.2010
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Надеюсь правильно понял задачу
Код:
#include <stdio.h> #include <string.h> #include <iostream.h> int main(void) { char a[100],b[100]; int mas[10]; for(int 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(int d=0;(strlen(a)>d)&&(a[d]<i+48);b[d]=a[d],d++); b[d]=i+48; for(;strlen(a)>d;b[d+1]=a[d],d++); b[d+1]=a[d]; for(int y=0;strlen(b)>y;a[y]=b[y],y++); a[y]=0; } cout<<"Result: "<<a<<"\n"; getchar(); return 0; } |
03.10.2010, 20:35 | #3 (permalink) |
Новичок
Регистрация: 02.10.2010
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
огого! спасибо!
конечно, мне вродь нельзя использовать массивы, и некоторыз функций я не знаю.....всё равно, огромное спасибо буду разбираться сейчас) |
03.10.2010, 21:25 | #5 (permalink) |
Новичок
Регистрация: 02.10.2010
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
ой, было бы неплохо....Нам вроде бы для этой проги массивы нельзя использовать. Ну и strlen - тоже такого ещё не проходили. Зато можно фунции использовать)
месять только С++ ещё проходим ( а ещё назло визуал студия на мой комп устанавливаться никак не хочет(( |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
04.10.2010, 13:31 | #8 (permalink) |
Member
Регистрация: 07.06.2010
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Ну вот тебе еще вариант исполнения задачи На 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; } Код:
#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; } |
04.10.2010, 18:59 | #9 (permalink) |
Новичок
Регистрация: 02.10.2010
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
ой спасибо! но я ночью сама написала, и кстать 10 по Лабе получила)))
сделала без массивов, чисто циклы и ветвление .... а в вашей программе i+48 что даёт? я просто это не совсем поняла, интересно стало) |
04.10.2010, 19:06 | #10 (permalink) |
Member
Регистрация: 07.06.2010
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Молодец что сама сделала А i+48 (i от 0 до 10) это в кодировке Ansi циферки "0123456789"
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|