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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2015, 17:25   #1
Max00766
Форумчанин
 
Регистрация: 15.11.2015
Сообщений: 151
По умолчанию Функции в Си, исправить код

Задано натуральное n, целые числа a1,a2,...,an. Рассмотреть отрезки последовательности a1,a2,...,an (подпоследовательности элементов, которые идут подряд), которые состоят из
1)полных квадратов
2)степеней натурального m
3)простых чисел
В каждом случае получить наибольшее из длин отрезков, которые рассматриваются.
Программа запускается но ничего не происходит, помогите исправить.
Код:
# include <stdio.h>
int square(int n)
{if (n==1) return 1;
int flag=0;
int i=2;
for(i=2;i<n;)
if (n%i==0){flag=1;
if ((n/i)%i==0) n/=(i*i);
else return 0;
}
else ++i;
if (flag==1) return 1;
else return 0;
}
int step(int y, int x)
{if (x==0) return 1;
else if (x>0) return x*step(y,x-1);
else return step(x, y+1)/x;
}
int prost(int a)
{int n;
int i=2;
for(i=2;i*i<=n;i++)
if (n%i==0) return 0;
return 1;
}
int MaxPosl(int b[10], int n, int max)
{int i, k; signed int st;
st=-1; max=0;
for(i=2;i<=n+1;)
{if ((b[i]==1) && (b[i-1]==1)) {if (st<0) st=i-1;}
else
if (st>0) {k=i-st; if (k>max) max=k; st=-1;}
}
}
main()
{int a[10], b[10], n, i, max, m;
printf("Vvedite n=\n");
scanf("%i", &n);
printf("Vvedite ishodnij massiv\n");
for(i=0;i<n;i++)
{scanf("%i", &a[i]);}
printf("Ishodnij massiv\n");
for(i=0;i<n;i++)
printf("%5i", &a[i]);
printf("Max psledovatelnost polnyh kwadratow\n");
for(i=1;i<=n;i++)
b[i]=square(a[i]);
MaxPosl(b, n, max);
printf("max=%i", max);
printf("Max posledovatelnost stepenej\n");
printf("Vvedite m=\n");
scanf("%i", m);
for(i=1;i<=n;i++)
b[i]=step(a[i], m);
MaxPosl(b, n, max);
printf("max=%i", max);
printf("Max posledovatelnost prostih chisel\n");
for(i=1;i<=n;i++)
b[i]=prost(a[i]);
MaxPosl(b, n, max);
printf("max=%i", max);
}
Max00766 вне форума Ответить с цитированием
Старый 18.11.2015, 17:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Всмысле не происходит?
Ввод просит сделать?

Кстати, ты точно уверен что она запускается вообще? Какой компилятор у тебя?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.11.2015, 19:15   #3
Max00766
Форумчанин
 
Регистрация: 15.11.2015
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Всмысле не происходит?
Ввод просит сделать?

Кстати, ты точно уверен что она запускается вообще? Какой компилятор у тебя?
Компилятор CodeBlocks, в компиляторе уверен так как всегда все хорошо было, программа запускается, открывается консоль, но не ввод не вывод не работают:
Max00766 вне форума Ответить с цитированием
Старый 18.11.2015, 21:48   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Code::Blocks это IDE, а не компилятор. (компилятор скорее всего MinGW)

А чего код так уныло отформатирован?

У меня работает вроде бы, так что странно. Наверно что-то с настройками IDE.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.11.2015, 23:11   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
работает вроде бы
И даже на int MaxPosl не ругается? Вот уж действительно странности
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.11.2015, 23:16   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну под работает я имел в виду, что компилируется, запускается и доходит до второго ввода, дальше не смотрел и код не изучал.

На отсутствие return Си только варнинг выдает.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.11.2015, 23:34   #7
Max00766
Форумчанин
 
Регистрация: 15.11.2015
Сообщений: 151
По умолчанию

У меня вроде запустилось, только не правильно считает и не выполняет все функции.
Max00766 вне форума Ответить с цитированием
Старый 19.11.2015, 15:51   #8
Max00766
Форумчанин
 
Регистрация: 15.11.2015
Сообщений: 151
По умолчанию

После перезапуска перестает вообще запускаться и выбивает:
ld.exe||cannot open output file bin\Debug\12laba.exe Permission denied|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
Код:
# include <stdio.h>
int square(int n)
{
    if (n==1) return 1;
    int flag=0;
    int i=2;
    for(i=2;i<n;)
    if (n%i==0)
{
    flag=1;
    if ((n/i)%i==0) n/=(i*i);
    else return 0;
}
        else ++i;
        if (flag==1) return 1;
        else return 0;
}
int step(int y, int x)
{
    if (x==0) return 1;
    else if (x>0) return x*step(y,x-1);
    else return step(x, y+1)/x;
}
int prost(int a)
{
    int n;
    int i=2;
    for(i=2;i*i<=n;i++)
    if (n%i==0) return 0;
    return 1;
}
int MaxPosl(int b[10], int n, int max)
{
    int i, k; signed int st;
    st=-1; max=0;
    for(i=2;i<=n+1;)
{
    if ((b[i]==1) && (b[i-1]==1))
        {
            if (st<0) st=i-1;
        }
    else
    if (st>0) {k=i-st; if (k>max) max=k; st=-1;}
}
}
main()
{
 int a[10], b[10], n, i, max, m;
 printf("Vvedite n=\n");
 scanf("%i", &n);
 printf("Vvedite ishodnij massiv\n");
 for(i=0;i<n;i++)
{
    scanf("%i", &a[i]);
}
 printf("Ishodnij massiv\n");
 for(i=0;i<n;i++)
  printf("%5i", &a[i]);
  printf("Max psledovatelnost polnyh kwadratow\n");
 for(i=1;i<=n;i++)
   b[i]=square(a[i]);
   MaxPosl(b, n, max);
   printf("max=%i", max);
   printf("Max posledovatelnost stepenej\n");
   printf("Vvedite m=\n");
   scanf("%i", m);
 for(i=1;i<=n;i++)
    b[i]=step(a[i], m);
    MaxPosl(b, n, max);
    printf("max=%i", max);
    printf("Max posledovatelnost prostih chisel\n");
 for(i=1;i<=n;i++)
     b[i]=prost(a[i]);
     MaxPosl(b, n, max);
     printf("max=%i", max);
}
Max00766 вне форума Ответить с цитированием
Старый 19.11.2015, 16:15   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Это называется не "перезапуск", а перекомпиляция. При перезапуске оно б не перезаписывало файл.

Наверно не закрыта программа.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.11.2015, 17:38   #10
Max00766
Форумчанин
 
Регистрация: 15.11.2015
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Это называется не "перезапуск", а перекомпиляция. При перезапуске оно б не перезаписывало файл.

Наверно не закрыта программа.
После перезапуска опять ничего не происходит, не работает ни ввод, ни вывод
Max00766 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправить код kostan3 Общие вопросы C/C++ 10 16.03.2014 17:45
исправить код mishammm Помощь студентам 4 24.09.2013 01:54
исправить код Alekzinder Паскаль, Turbo Pascal, PascalABC.NET 0 28.03.2013 23:41
Помогите исправить код одной функции... hen Помощь студентам 3 12.04.2009 23:10
Помогите исправить код одной функции... hen Общие вопросы C/C++ 1 12.04.2009 21:58