Наибольшее из 3 чисел.

Тема в разделе "C/C++/C#", создана пользователем ALDon, 6 ноя 2010.

Наш партнер Genesis Hackspace
Статус темы:
Закрыта.
  1. ALDon

    ALDon Гость

    Нужно написать программу, которая выводит максимальное цисло среди трех цисел.Длина строка состоящий из 3 цисел не больше 10^100.Нужно решить используя указатель.Примеры:
    вводим 4 5 6, выводить 6;
    вводим 547865 98 25364, выводит 547865;
    вводим 9958439238923098349024 895 663289,выводит 9958439238923098349024;

    вот код который я написал
    Код (Text):
    #include<iostream>
    using namespace std;
    int main (){
    int a,b,c;
    cin>>a>>b>>c;
    if((a>b && a>=c )|| (a>c && a>=B))
    cout<<a;
    if(b>a && b>=c)
    cout<<b;
    if(c>a && c>b)
    cout<<b;
    return 0;}
    но если ввести 9958439238923098349024 код не работает
     
  2. Vunderkind

    Vunderkind Active Member

    Регистрация:
    26 окт 2010
    Сообщения:
    27
    Симпатии:
    0
  3. Vunderkind

    Vunderkind Active Member

    Регистрация:
    26 окт 2010
    Сообщения:
    27
    Симпатии:
    0
     
  4. Vunderkind

    Vunderkind Active Member

    Регистрация:
    26 окт 2010
    Сообщения:
    27
    Симпатии:
    0
    Насколько я помню нет такой 10^100,Наверное через строку решается
     
  5. flashkpi

    flashkpi Гость

    Алгоритм примерно такой, сначала сравниваешь длину строк, та, которая длиннее, там и больше число, там где, меньше - отбрасываешь, если одинаково, то сравниваешь начиная со старшего разряда
     
  6. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    3 Задачи одним кодом почти :)

    Код (C++):
    #include <iostream>

    using namespace std;

    int main()
    {
    int a;
    char ch[1000];
    cin.getline(ch,1000);

    int Max = 0;
    char buffer[128]; //Введем буферную переменную
    memset(buffer,0,128); //Обнулим ее
    char *pStr = buffer; //Введем указатель на буферную перемнную

    char Result[128]; //Результирующее слово
    memset(Result,0,128);

    for (int i = 0; i <= strlen(ch); i++) //Обойдем всю строку включая завершающий символ
    {
    if ((unsigned char)isdigit(ch[i])) //Если символ циферный то
    {
    if (strlen(buffer) ==0 && ch[i]=='0') continue; //Если начальные символы нули их мы писать не будем
    *pStr = ch[i]; //Посимвольно пишим символы в буфер из ch
    pStr++; //Сдвиг указателя
    }
    else if (strlen(buffer)) //Если же не циферный и в buffer - что то есть то
    {
    if (strlen(buffer) > Max)
    {
    strcpy(Result,buffer); //Скопируем из буфера в результат
    Max = strlen(buffer);
    }
    else if (strlen(buffer) == Max)
    {
    //там по заданию что сто про указатели было сказанно
    char *pResult = Result;
    pStr = buffer;
    while (*pResult != 0)
    {
    if (*pResult < *pStr) //Посимвольно (поразрядно для нашего примера) сравним
    {
    strcpy(Result,buffer); //Скопируем из буфера в результат
    Max = strlen(buffer);                  
    break;
    } else if (*pResult > *pStr) break;
    pResult++;
    pStr++;
    }
    }
    memset(buffer,0,128); //Обнулим буферную переменную
    pStr = buffer; //Установим указатель на начало буфера
    }
    }
    cout<<"Result : '"<<Result<<"'"<<endl; //Выведим результат
    cout<<"Result Format : ";
    for (int i = 0; i<strlen(Result); i++)
    {
    cout<<Result[i];
    if ((strlen(Result)-1-i)%3 == 0) cout<<" ";
    }


    }
     
Загрузка...
Похожие Темы - Наибольшее из чисел
  1. Елизавета017
    Ответов:
    0
    Просмотров:
    26
  2. MatthewK
    Ответов:
    0
    Просмотров:
    25
  3. magistr
    Ответов:
    2
    Просмотров:
    52
  4. rownong
    Ответов:
    1
    Просмотров:
    58
  5. vish33
    Ответов:
    0
    Просмотров:
    44
Статус темы:
Закрыта.

Поделиться этой страницей