Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Целочисленная арифметика (http://www.tehnari.ru/f41/t40536/)

Валерьянка 02.10.2010 19:30

Целочисленная арифметика
 
Здравствуйте! помогите пожалуйста с программкой в С++!

Написать программу, которая для заданного натурального числа добавляет в запись числа минимальное количество цифр так, чтобы количество повторений каждой цифры в записи числа было четно так, чтобы полученное число было минимальным.

ну, или хотя б разобраться с условием помогите! плизз!

KiD2 03.10.2010 19:02

Надеюсь правильно понял задачу :tehnari_ru_160:
Код:

#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

огого! спасибо!
конечно, мне вродь нельзя использовать массивы, и некоторыз функций я не знаю:tehnari_ru_102:.....всё равно, огромное спасибо

буду разбираться сейчас)

KiD2 03.10.2010 20:57

Если нужно программу без каких-то функции например без strlen или еще чего пишем может и поправлю ;) и объясню если что не понятно будет...

Валерьянка 03.10.2010 21:25

ой, было бы неплохо....Нам вроде бы для этой проги массивы нельзя использовать. Ну и strlen - тоже такого ещё не проходили. Зато можно фунции использовать)

месять только С++ ещё проходим (
а ещё назло визуал студия на мой комп устанавливаться никак не хочет((

KiD2 03.10.2010 22:10

А зачем визуал студия О_О Вы на ней что ли пишете??? Скажи что ли тогда под какой конкретно Си писать... А то один то не поддерживает другой это...

Валерьянка 03.10.2010 23:34

язык С++ MICROSOFT VISUAL STUDIO 2008, или 2005 без разницы
про с++ я в начале ещё писала

KiD2 04.10.2010 13:31

Ну вот тебе еще вариант исполнения задачи На 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;
}

Полностью от массивов и функций все равно не избавился ) Выбирай какой нравится...

Валерьянка 04.10.2010 18:59

ой спасибо! но я ночью сама написала, и кстать 10 по Лабе получила)))
сделала без массивов, чисто циклы и ветвление ....

а в вашей программе i+48 что даёт? я просто это не совсем поняла, интересно стало)

KiD2 04.10.2010 19:06

Молодец что сама сделала :) А i+48 (i от 0 до 10) это в кодировке Ansi циферки "0123456789"


Часовой пояс GMT +4, время: 15:34.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.