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

  • 🚨 24 часа до повышения цены на курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    Последний день записи в текущий поток по старой цене Подробнее о курсе ...

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

  • Автор темы Автор темы Rivass
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
R

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);
}

К сожалению сейчас я таким способом не напишу универсальную программу для решения задач такого типа, поэтому прошу вашей помощи....
 
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ы...
 
Я примерно понимаю что нужно вносить в массив каждую цифру числа, но не могу себе представить как это сделать...

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

DarkKnight125
массив arr достаточно сделать булевским с дефолтным значением false и при первой же попытки сделать true переменную, которая уже true выводить 'yes'.. но это мелочи.
 
второй вариант: в цикле делать остаток от деления на 10 - получаем последнюю цифру, делаем целочисленное деление на 10 - получаем число без последней цифры, и так пока число не ноль.
Вариант не плохой, жаль только лимит очень уж маленький...
Я тоже первоначально подумал про него, но потом все же подумал что пользователю все же захочется ввести уж очень много цифр...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Курс AD