Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Арифметическая прогрессия!


Автор: euhenia 5.2.2010, 17:40
Подскажите пожалуйста, как можно в си проверить является ли элементы строки арифметической прогрессией!
Заранее благодарю!!  smile 

Автор: cristaloleg 5.2.2010, 18:16
вспоминаем формулу н-ного члена, выражаем н, и если н целое, то член прогрессии(данный) подходит.

Автор: euhenia 5.2.2010, 18:50
короче, я  сейчас немного подумала и у меня получилось что-то типа вот этого только она не работает.....
не знаю почему по ходу у меня, что-то не так.
#include <stdio.h>
#include <conio.h>
void main()
  {
char s [255];
int i,d,n;
printf("vvedite n");
   for(i=0;i<n;i++)
scanf("%d", &n);
printf("vvedite elementi masiva");
   for(s[i]=0;s[i]<'\0';i++)
scanf("%d", &s[i]);
 for(i=1;i<=n+1;i++)
 {
 d=s[2]-s[1];
 if [i+1]-s[i]==d
 contonue;
 else break;
 }
 if (i==n)
   printf(" iavleaetsea");
 else
    printf("ne eavleaetsea";
 getch();
 } 

Автор: andrew_121 5.2.2010, 19:12
Цитата(euhenia @  5.2.2010,  18:50 Найти цитируемый пост)
if [i+1]-s[i]==d

 smile 

ниже ведь правильно написано.

Добавлено через 5 минут и 51 секунду
Цитата(euhenia @  5.2.2010,  18:50 Найти цитируемый пост)
contonue;

и это

Автор: euhenia 5.2.2010, 19:38
да, я потом это исправила, но по любому не идет smile 

Автор: andrew_121 5.2.2010, 19:40
Цитата(euhenia @  5.2.2010,  19:38 Найти цитируемый пост)
не идет

нет такой ошибки в понятии компилятора.

Автор: euhenia 5.2.2010, 19:43
  for(s[i]=0;s[i]!='\0';i++)
здесь так должно быть..но тоже не идет

Автор: mes 5.2.2010, 19:47
Цитата(euhenia @  5.2.2010,  18:43 Найти цитируемый пост)
 for(s[i]=0;s[i]!='\0';i++)

for (int i=0; s[i]; ++i)

Автор: euhenia 5.2.2010, 19:48
ну нет конечно...не спорю
просто не работает

Автор: mes 5.2.2010, 19:48
только в следующей строчке scanf все равно будет не то, чего Вы ожидаете..

Добавлено @ 19:50
Цитата(andrew_121 @  5.2.2010,  18:40 Найти цитируемый пост)
нет такой ошибки в понятии компилятора. 


Цитата(euhenia @  5.2.2010,  18:48 Найти цитируемый пост)
ну нет конечно...не спорю
просто не работает 


andrew_121, мягко намекает, что неплохо бы смотреть на ошибки компилятора, а также было бы неплохо, если б делились этой тайной информацией с форумчанами smile

Добавлено через 4 минуты и 18 секунд
а текже было б хорошо, если б открыли для себя теги оформления кода - справа верху над окошком редактирования кнопка "Код"

Добавлено через 8 минут и 2 секунды
ну раз начал говорить о том, что было бы хорошо, то добавлю к списку -
 если  б Вы проявили немножко больше внимательности и усердия и исправили бы самостоятельно все "глупые" ошибки, такие например как отсуствие парной закрывающей скобки.

Ну а также неплохо посещать лекции..

Автор: euhenia 5.2.2010, 20:15
 smile  smile  smile  smile мальчики, вы чего такие злые ??

Автор: mes 5.2.2010, 21:19
Цитата(euhenia @  5.2.2010,  19:15 Найти цитируемый пост)
 smile  smile  smile  smile мальчики, вы чего такие злые ?? 

прежде всего покажите, что Вы стремитесь (а не чтоб отвязаться, как в этой теме) и, я уверен, что многие с удовольствием помогут Вам решить возникающие трудности.
smile

Добавлено через 46 секунд
Цитата(euhenia @  5.2.2010,  19:15 Найти цитируемый пост)
  smile  smile  smile  smile 

ну а слезами делу не поможешь ..


Автор: euhenia 5.2.2010, 22:49
да стремлюсь я. просто не могу понять, что не так??
вот и спросила, а в ответ только упреки услышала...

Автор: mes 5.2.2010, 23:27
Цитата(euhenia @  5.2.2010,  21:49 Найти цитируемый пост)
да стремлюсь я. просто не могу понять, что не так??

1. отредактируйте свой пост, так чтоб код был оформлен (не заставляйте других напрягать зрение)
2. исправьте все ошибки, с которыми способны справиться самостоятельно. ( в частности вышеупомянутая нехватка скобок , а также явные синтаксические ошибки )
3. сформулируйте вопрос, который представляет для Вас трудность, так чтоб легко можно было понять, что именно требуется.
(телепатов на форуме явная нехватка).. При этом не забывайте указать всю необходимую информацию, и в частности сообщение компилятора об ошибкe в случае некомпилируемости проекта.


П.С. есть еще раздел:
http://forum.vingrad.ru/forum/Vingrad-help-center.html
может Вам туда надо было ?

Автор: NewDima 6.2.2010, 13:07
euhenia, не стоит обижаться, это не снобизм =)
Вот если твой код немного подрихтовать, то получится яснее
Код

char *s;
    int n = 0, diff;
    printf("input row length (>=3)\n");
    while (n < 3) {
        scanf("%d", &n);
    }
    s = (char*)malloc(sizeof(char)*n);
    printf("input row elements\n");
    for (int i = 0; i < n; ++i) {
        scanf("%d", &diff);
        s[i] = diff;
    }
    diff = s[1] - s[0];
    for (int i = 2; i < n; ++i) {
        if (s[i] - s[i-1] != diff) {
            printf("ne yavlyaetsya");
            getch();
            return 0;
        }
    }
    printf("yavlyaetsya");
    getch();


Добавлено через 4 минуты и 22 секунды
а вообще здесь можно обойтись без выделения память под строку вообще, если в цикле чтений чисел с клавиатуры сразу проверять, могут ли они входить в арифметическую прогрессию с предыдущими. Будет короче

Добавлено через 14 минут и 12 секунд
Цитата(euhenia @ 6.2.2010,  01:50)
Код

scanf("%d", &s[i]);

Так делать нельзя, проведи опыт
Код

    char arr[] = {0, 255, 255, 255, 255, 0};
    scanf("%d", &arr[0]);
    printf("%s", &arr[1]);

Автор: euhenia 6.2.2010, 18:53
спасибо большое!!!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)