2013-03-31 3 views
0

Я пытаюсь решить вопрос, используя на С.-структуруАлгоритм о структуре на C

Он должен найти самую большой из 3 значений, и если это простое число, добавить ко всем остальным. Если не просто вернуть наибольшее число в основную функцию. Я не мог найти, где я ошибся.

#include <stdio.h> 
#include <stdlib.h> 
struct q { 
    int a, b, c, max; 
}d; 

func(struct q d1) 
{ 
    int max1; 
    max1=0; 
    int w=0; 
    int i; 
    if (d1.a>d1.b && d1.a>d1.c) 
     max1=d1.a; 
    if (d1.b>d1.a && d1.b>d1.c) 
     max1=d1.b; 
    if (d1.c>d1.b && d1.c>d1.a) 
     max1=d1.c; 

    for(i=2;i<max1;i++) 
    { 
     if (max1%i==0) 
      w=1; 
    } 
    if (w==0) 
    { 
     d1.a=d1.a+max1; 
     d1.b=d1.b+max1; 
     d1.c=d1.c+max1; 
    } 
    if (w==1) 
    { 
      d1.max=max1; 
    } 
} 

int main() 
{ 
    int i; 
    for(i=0;i<1;i++) 
    { 
     d.max=0; 
     puts("enter value of a b c:"); 
     scanf("%d %d %d",&d.a,&d.b,&d.c); 
     func(d); 
     if(d.max==0) printf("%d %d %d",d.a,d.b,d.c); 
     else printf("%d",d.max); 
    } 

} 

ответ

3

Я не уверен в логике алгоритмов. Но эта ошибка -

func(struct q d1) 

func(d); 

d1 является копией переданного параметра d. Таким образом, изменяя d1, не влияет на переданный параметр d.

Фактически вы должны передать адрес объекта d функции.

+1

Средства: передать указатель на функцию, изменить структуру с помощью указателя на структуру, а не копию структуры. –

+0

Большое спасибо, наконец, я получил, как использовать указатель –

0

в FUNC() вы должны передать адрес структуры ... , потому что если вы только передать STRUCT переменную, то его значение влияет только до этого буфера ...

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