1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

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

Статус темы:
Закрыта.
  1. ALDon

    ALDon Гость

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

    вот код который я написал
    Код:
    #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

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

    Vunderkind Active Member

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

    Vunderkind Active Member

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

    flashkpi Гость

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

    DarkKnight Well-Known Member

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

    Код:
    #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<<" ";
    }
    
    
    }
     
Загрузка...
Статус темы:
Закрыта.

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