Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2008, 00:20   #1
StudentPolitech
Форумчанин
 
Аватар для StudentPolitech
 
Регистрация: 21.11.2008
Сообщений: 400
По умолчанию Найти самую длинную подпоследовательность состоящую только из нулей, С++

Люди кто отлично знает С++ помогите нужно сдать завтра задачу:
Одномерный массив заполнен нулями и единицами. Найти самую длинную подпоследовательность состоящую только из нулей. Я решал но почему то у меня не компилируется.

From Stilet: Если будеш называть темы с нарушениями правил (читай их немедля) то в следующий раз тема будет подлежать удалению
Винда, KIS 2010, книжка по С/С++, остальное неважно........

Последний раз редактировалось Stilet; 21.11.2008 в 00:34.
StudentPolitech вне форума Ответить с цитированием
Старый 21.11.2008, 00:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но почему то у меня не компилируется.
Ну дык, выкладывай код коли хош чтоб помогли.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2008, 00:53   #3
StudentPolitech
Форумчанин
 
Аватар для StudentPolitech
 
Регистрация: 21.11.2008
Сообщений: 400
По умолчанию

#include<iostream.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>

int main()
{
int i,a,b,n;
char mas[80];
cout<<"Vvedite_massiv"<<endl;
cin>>mas;
for(a=0;i<n;a++)
{
if(mas[i]=0)
{
n++;
}
if(mas[i]=1)
{
if(a>b)
{
b=a;
}
a=0;
}
}
cout<<b<<endl;
getch();
return 0;
}
Винда, KIS 2010, книжка по С/С++, остальное неважно........
StudentPolitech вне форума Ответить с цитированием
Старый 21.11.2008, 09:39   #4
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

cout<<"kol-vo elementov"<<endl;
cin>>n;
for(i=0;i<n;i++)
{
cin>>mas[i];
}

int max = 0;
b = 0;
for(i=0;i<n;i++)
{
if(mas[i] == 0)
b++;
else
{
if (b > max) max = b;
b = 0;
}
}
cout<<max<<endl;
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 26.11.2008, 01:55   #5
StudentPolitech
Форумчанин
 
Аватар для StudentPolitech
 
Регистрация: 21.11.2008
Сообщений: 400
По умолчанию

Ламер 001 код не работает, поэтому я переписал всё заново, по идее должно всё работать но выводятся какие то ромбики, не знаю что и делать вроде бы весь код перепроверил но ошибку не нашёл
#include<iostream.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<string.h>

int main()
{
clrscr();
int nul=0,k=-1,i,dlina;
char mas[180],cifry[30];
cout<<"Vvedite massiv"<<endl;
cin>>mas;
dlina=strlen(mas);
for(i=0;i<dlina;i++)
{
if(mas[i]==0)
{
nul++;
if(mas[i+1]!=0)
{
k++;
cifry[k]=nul;
nul=0;
}
}
}
for(k=0;k<dlina;k++)
{
cout<<cifry[k]<<"\n";
}
getch();
int a,b,c,dlina2,t;
dlina2=strlen(cifry);
for(a=1;a<dlina2;a++)
{
for(b=dlina2-1;b>=2;b--)
{
if(cifry[b-1]>cifry[b])
{
t=cifry[b-1];
cifry[b-1]=cifry[b];
cifry[b]=t;
}
}
}
cout<<cifry[dlina2-1]<<endl;
getch();
return 0;
}
Винда, KIS 2010, книжка по С/С++, остальное неважно........
StudentPolitech вне форума Ответить с цитированием
Старый 26.11.2008, 23:01   #6
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

не понял у тебя массив символов или чисел? и почему моя прога не работает? какая ошибка?
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 28.11.2008, 00:42   #7
StudentPolitech
Форумчанин
 
Аватар для StudentPolitech
 
Регистрация: 21.11.2008
Сообщений: 400
По умолчанию

Как я помню функция strlen предназначена для подсчёта символов в массиве, но я задал ввод cin для ввода цифр по идее это правильно. Рассказываю, здесь я задаю 2 массива в один ввожу данные mas послее ввода чисел если прога встречает последовательность нулей она записывает их количество в последовательности в массив cifry а после этого я сортирую массив методом пузырька и вывожу последний элемент массива т.е. самый большую подпоследовательность, токак я не пойму где у меня ошибка. Кто смотрит сейчас эту страницу и хорошо знает С++ не поленитесь просто просмотреть код может найдёте ошибку, а то как то не очень хочется заново его переписывать.
Винда, KIS 2010, книжка по С/С++, остальное неважно........
StudentPolitech вне форума Ответить с цитированием
Старый 28.11.2008, 09:16   #8
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

вот сиди разбирайся:
Код:
#include <stdio.h>
#include <conio.h>

int main(int argc, char* argv[])
{
 int mas[100];
 int i, n;
 printf("Vvedite koli4estvo elementov\n");
 scanf("%d", &n);
 for(i = 0; i < n; i++)
 {
  printf("Vvedite %d element ", i);
  scanf("%d", &mas[i]);
 }

 int max = 0; //максимальная длина
 int b = 0; // текущая длинна

 for(i = 0; i < n; i++)
 {
  if (mas[i] == 0)
   b++;
  else  // найден не 0 т.е. данная последовательность 0 окончилась
  {
   if (b > max) max = b;
   b = 0; // обнуляем для очередного подсчета
  }
 }
 // массив мог окончится 0 и поэтому нужна еще одна проверка
 if (b > max) max = b;
 printf("Maximalnaya posledovatel\'nost\' nulei sodergit %d elementov\n", max);
 getch();
 return 0;
}
//---------------------------------------------------------------------------
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нарисовать окружность состоящую из 36 разноцветных квадратов Invisible Hunter Паскаль, Turbo Pascal, PascalABC.NET 2 29.05.2008 18:03
НАпечатать наибольшую последовательность состоящую gred Помощь студентам 6 23.03.2008 16:12
В одномерном масиве найти длинную цепочку стоящих попарно различных элементов Махряк Помощь студентам 0 05.12.2007 20:00
В одномерном масиве найти длинную цепочку стоящих попарно различных элементов Махряк Помощь студентам 0 29.11.2007 23:09