2013-08-15 2 views
0

я должен написать код для программы, которая принимает массив с п элементов, а затем проверяет, есть ли два последовательных значения массива с равными абсолютных результатов values.The должны быть отображены следующим образом:Массив c программирование абсолютного значения?

|v[i]|=|v[i+1]| 
|v[j]|=|v[j+1]| 

Таким образом,

#include <stdio.h> 
    int i,j,n; 
    { 
     int v[100]; 
     printf ("Please write n:"); 
     scanf("%d",&n); 
     for (i=0;i<n,i++) 
      printf("Write the element %d",i); 
     scanf("%d", &v[i]); 
    } 
    for (i=0;i<n;i++) 
     abs(v[i])=abs(V[i+1]); 
    printf("Elements are %d',v[i]"); 
    for (j=0;j<n;j++) 
     abs(v[j])=abs(v[j+1]); 
    printf("Elements are %d',v[j]"); 

Когда я запускаю это, он показывает, как тысяча ошибок, но я думаю, что ошибки логичны. Можете ли вы сказать мне, где я ошибаюсь?

+1

Это не похоже на действующий код C для меня. – GWW

+0

http://en.cppreference.com/w/c/numeric/math/abs – chris

+1

На каком языке это? .. Это начинается как C, но тогда это становится чем-то совершенно другим! – dasblinkenlight

ответ

2

Вы не можете использовать | как функцию абсолютного значения.

Вместо этого использовать abs().

Так что вы должны делать что-то вроде abs(v[i]) ...

if (abs(v[i]) == abs(v[i+1])) 

и так далее.

Вот что я придумал ...

#include <stdio.h> 
#include <stdlib.h> 

main() 
{ 
    int v[100]; 
    int n = -1, i; 

    while (n < 1 || n > 100) 
     { 
      printf ("Please enter n (between 1 and 100):"); 

      scanf("%d",&n); 
     } 

    for (i=0;i<n;i++) 
     { 
     printf("Enter element %d", i); 
     scanf("%d", &v[i]); 
     } 

    for (i=0;i<n;i++) 
     { 
     if (abs(v[i]) == abs(v[i+1])) 
     { 
      printf ("|v[%d]| = |v[%d]|\n", i, i+1); 
     } 
     } 

    return 0; 
} 
+0

Спасибо! Я отредактировал его. – user2685334

+1

Есть еще несколько проблем с кодом, которые вы можете уточнить на них. –

+0

Вам понадобится '#include ' использовать 'abs' – GWW

1

Использование abs() функции для абсолютных значений. Включите заголовок stdlib.h.
Некоторые другие исправления:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int i,n; 
    int v[100]; 
    printf ("Please write n:"); 
    scanf("%d",&n); 
    for (i=0;i<n;i++) 
    { 
      printf("Write the element %d\n",i); 
      scanf("%d", &v[i]); 
    } 
    for (i=0;i<n-1;i++) 
    { 
      if(abs(v[i])==abs(v[i+1])) 
       printf("|v[%d]|=|v[%d]|\n",i,i+1); 
    } 
    return 0; 
} 
+2

Включить math.h? Я бы подумал, что вы должны включить stdlib.h. Но это может быть специфическое для Linux. – amrith

+0

@amrith - ты прав. Я не знаю, где 'haccks' получил' math.h' для этого случая. –

+1

'fabs()' et al находятся в ''; 'abs()', 'labs()' et al находятся в ''. –

0

Вы должны нам функцию абс(). Вы должны убедиться, что у вас есть скобки настроены правильно. Вы также должны быть осторожны при переходе через массивы (вы можете пойти за пределы).

Вот то, что может помочь:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int i,j,n; 
    int v[100]; 
    printf ("Please write n: "); 
    scanf("%d",&n); 
    for (i=0;i<n;i++) 
    { 
     printf("Write the element %d \n",i); 
     scanf("%d", &v[i]); 
    } 
    for (i=1;i<n;i++) 
    { 
     if(abs(v[i-1])==abs(v[i])) 
     { 
      printf("Elements at positions %d and %j \n",i-1, i);    
      printf("Elements are %d and %d \n",v[i-1], v[i]); 
     } 
    } 
    for (j=1;j<n;j++) 
    { 
     if(abs(v[j-1])==abs(v[j])) 
     { 
      printf("Elements at positions %d and %j \n",j-1, j); 
      printf("Elements are %d and %j \n",v[j-1], v[j]); 
     } 
    } 

    return 0; 
} 
+0

Ошибки логичны! Если вы попытаетесь запустить это, это неправильно, вы можете вводить только значения ... – user2685334

+0

'main' возвращает int, пожалуйста, используйте онлайн-компилятор, если вам это нужно: http://stackoverflow.com/questions/3916000/online-c-compiler-and-evaluationator –

+0

Если вы поместили значения в это, результат будет Элементы are2The элементы are2Thelements – user2685334

1

вы не можете использовать "| х |" для абсолютной величины. только для or оператора и побитового.

для того, чтобы сделать абсолютное вам нужно написать код самостоятельно или использовать abs функцию

на вершине, что у вас есть куча ошибок synex

  • Нет Основная функция
  • printf("Elements are %d',v[i]"); ISN» t right, u предназначенный для проведения printf("Elements are %d",v[i]);

некоторые предложения:

#include <stdio.h> 
#include <stdlib.h> 

main() 
{ 
    int i,j,n; 
    int v[100]; 
    printf("Please write n:"); 
    scanf("%d\n",&n); 
    for (i=0;i<n,i++) 
    { 
     printf("Write the element %d",i); 
     scanf("%d\n", &v[i]); 
    } 

    for (i=0;i<n-1;i++) 
    { 
    if(abs(v[i])==abs(V[i+1])) 
     printf("Elements %d and %d are absolute equal", v[i], v[i+1]); 
    } 
} 
+0

По-прежнему отсутствует несколько символов '{'. –

+0

Код не компилируется и нуждается в улучшенном форматировании, поэтому он доступен в Интернете, если вам это нужно: http://stackoverflow.com/questions/3916000/online-c-compiler-and-evaluator –

+1

И это последнее, если утверждение довольно бесполезно. –

Смежные вопросы