• Твой профиль заполнен на 0%. Заполни за 1 минуту, чтобы тебя нашли единомышленники и работодатели. Заполнить →

Строки На Си

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

asoishnica

Найти все цепочки символов , являющиеся записями целых чисел по основанию 8 и найти цепочку , являющуюся записью наибольшего числа.
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<string.h>
void main()
{
char str[100]={0};
char tst[100]={0}, max=0;
int i=0,n;
clrscr();
puts("Vvedite stroku");
gets(str);
for(i=0;str!='\0';i++)
{while(str=='0' || str=='1'){
if(tst[100]==0) tst=str;}
n=(int)tst;
if(n>max){ max=n; memset(tst, 0, sizeof(int)*100);}

}
printf("%d",max);
getch();
}
 
Сформулируй условие более понятно
 
Сформулируй условие более понятно
А чего непонятного? Все ясно.

Не работает потому что вот здесь у вас бесконечный цикл:

C++:
while (str[i]=='0' || str[i]=='1'){
if(tst[100]==0) tst[i]=str[i];}
n=(int)tst;
if(n>max){ max=n; memset(tst, 0, sizeof(int)*100);}

Мне вообще смысл этих строк не понятен. Фактически тут ничего не делается.
Вам нужно разбить строку на последовательности: искать до пробела и плюс если в последовательности не встречаются символы: 8, 9 и все остальные символы. Для этого можно формировать отдельную строку (ваш tst[100]). Затем записывать число в массив (int chisla[100], ну например), используя функцию atoi(). Затем просто максимальный элемент в массиве найти.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab