Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 03.10.2012, 17:05   #1 (permalink)
Gerold
Новичок
 
Регистрация: 03.10.2012
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите найти ошибку в программе на Си

На стандартном потоке ввода задается натуральное число N (N > 0), после которого следует последовательность из N целых чисел.

На стандартный поток вывода напечатайте длину максимальной (по длине) возрастающей непрерывной подпоследовательности входной последовательности.

Указание: использовать массивы запрещается.

Программа у меня неверно при большом N работает.Помогите ошибку найти.

Код:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    long long a,b,max,i,s;
    unsigned long n;
    max=1;
    s=1;
    scanf("%lu",&n);
    if ((n==0)||(n==1))
    {
        printf("%lu",n);
        return 0;
    }
    scanf("%lld",&a);
    if (n>2)
    {
        for (i=2;i<=n;i++)
        {
            b=a;
            scanf("%lld",&a);
            if (b<a)
            s++;
            else if (s>=max)
            {
                max=s;
                s=1;
            }
        }
        if (s>max) max=s;
        printf("%lld",max);
    }
    if (n==2)
    {
        b=a;
        scanf("%lld",&a);
        if (a>b)
        printf("2");
        else
        printf("1");
    }
    return 0;
}
Gerold вне форума   Ответить с цитированием

Старый 03.10.2012, 17:05
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Ознакомление с подобными топиками очень эффективно в решении любых проблем

Строки. Не могу найти ошибку в программе
Помогите найти ошибку в программе
Помогите найти ошибку

Старый 05.10.2012, 12:27   #2 (permalink)
Fenix
404
 
Аватар для Fenix
 
Регистрация: 10.01.2010
Сообщений: 1,749
Записей в дневнике: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3868
По умолчанию

Вот так (компилировал в Dev-C++):
Код:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
 int a,
     b;
 int n=0,
     max=1,
     s=1;
 int i;
 
 printf("\nEnter quantiy of numbers: ");
 scanf("%d",&n);
 switch (n)
 {
  case 0: 
  {
   printf("\nMax series: 0\n");
   break;
  }
  case 1: 
  { 
   printf("\nEnter numbers:\n");
   scanf("%d",&a);
   printf("\nMax lenght: 1\n");
   break;
  }
  
  default :
  {
   printf("\nEnter numbers:\n");
   scanf("%d",&a);
   for (i=2;i<=n;i++)
   {
    scanf("%d",&b);
    if(a<=b) s++;
    else s=1;
    if(s>max) max=s;    
   a=b;
   }
   printf("Max series: %d\n",max); 
   break;
  }
 } 
  return 0;
}
На будущее - не ленитесь писать комментарии к выводу. Также, не вижу смысл объявлять переменные long long и unsigned long, здесь Вам достаточно и int.
Fenix вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 22:36.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.