Работа с символьными массивами (наверное)

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

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

    Rivass Гость

    Вот есть задачка:

    Вводится целое число A. Проверить наличие в записи числа одинаковых цифр (вы-вести yes, если одинаковые цифры найдены, иначе вывести no). Проверку реализовать через функцию. (Язык C)

    Я примерно понимаю что нужно вносить в массив каждую цифру числа, но не могу себе представить как это сделать.... До этого писал программу, но она была по проще и решалась арифметически... Тогда требовалось найти сумму введенного четерехзначного числа...
    Вот как я её тогда решил:
    Код (C++):
    #include <stdio.h>
    int A;
    void main() {
    printf ("Type number 4 symbols=",A);
    scanf_s ("%d",&A);
    int S=A/10;
    S=A-(S*10);
    int K=A/100;
    int B=K;
    K=((A-(K*100))-S)/10;
    int F=A/1000;
    int C=B-(F*10);
    int Z=S+K+F+C;
    printf_s ("Numbers summ=%d\n",Z);
    }
    К сожалению сейчас я таким способом не напишу универсальную программу для решения задач такого типа, поэтому прошу вашей помощи....
     
  2. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Код (C++):
    /*
    Вводится целое число A. Проверить наличие в записи числа одинаковых цифр (вы-вести yes, если одинаковые цифры найдены, иначе вывести no).
    Проверку реализовать через функцию.
    */

    #include <iostream>
    #include <ctype.h> // для isdigit

    using namespace std;

    void main(void)
    {
    setlocale(LC_ALL,"Russian");
    int Arr[10]= {0}; //Наш массив цифр
    char buffer[1024]={0}; //Буферная переменная под строку
    cout<<"Введите целое число : ";
    gets(buffer); //Получим строку

    for (int i=0; i< strlen(buffer); i++)
    if (isdigit(unsigned char(buffer[i])))
    {  
    Arr[buffer[i]-'0']++;
    }

    for (int i = 0; i<=9; i++)
    cout<<"Цифр '" << i << "' ="<< Arr[i]<< endl;

    //Условие задание
    for (int i = 0; i<=9; i++)
    if (Arr[i]>0)
    {
    cout<<"Yes!!! Одиноковые цифры найдены"<< endl;
    return;
    }
    cout<<"No!!! Нет одинаковых цифр"<< endl;
    }
    В функцию вынеси Сам...
    Язык С - замени Сам coutы на printfы...
     
  3. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    первый вариант: ввести число как строку, а строка - это массив
    второй вариант: в цикле делать остаток от деления на 10 - получаем последнюю цифру, делаем целочисленное деление на 10 - получаем число без последней цифры, и так пока число не ноль.

    DarkKnight125
    массив arr достаточно сделать булевским с дефолтным значением false и при первой же попытки сделать true переменную, которая уже true выводить 'yes'.. но это мелочи.
     
  4. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0

    В моей задумке такое не прокатит ;-)
     
  5. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    DarkKnight125
    так там и не надо их выводить :(
     
  6. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Вариант не плохой, жаль только лимит очень уж маленький...
    Я тоже первоначально подумал про него, но потом все же подумал что пользователю все же захочется ввести уж очень много цифр...
     
Загрузка...
Похожие Темы - Работа символьными массивами
  1. Andrey Kha
    Ответов:
    0
    Просмотров:
    20
  2. Hoasker
    Ответов:
    0
    Просмотров:
    64
  3. garri671
    Ответов:
    0
    Просмотров:
    52
  4. lelik200969
    Ответов:
    0
    Просмотров:
    50
  5. Kozolick
    Ответов:
    0
    Просмотров:
    136
Статус темы:
Закрыта.

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