Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

under

Делител на 3 числа.

Препоръчан отговор


#include<stdio.h>void input(int*a);int ND(int b);void main(void){	 int a,b,c,sum=0;	 input(&a);	 input(&b);	 input(&c);	 sum=a+b+c;	 printf("%d",ND(a));	 printf("%d",ND(b));	 printf("%d",ND(c));	 printf("%d",sum);	 }	 int ND(int a)	 {		 int x=a/2;		 for(;x>0;x--)		 {					  if(a%x==0)					  {							    return x;							    }		 }		 return 1;	 }	 void input(int*a)	 {		  do		  {					  printf("n=");					  scanf("%d",a);					  }					  while(*a <=0 || *a>=100);					  getchar ();					  } 

Ако може малко да помогнете ето ми ги и следните проблеми.Компилатора ми е DEV C++ и принципно,като напиша

getchar();
на края трябва да ми го задържа на екрана,но сега нещо не се получа.А това,което трябва да прави е потребителя,след като въведе 3 числа,които да са в диапазона от 0 до 100,да намери най-големия делител на всяко от числата и сумата им,но то ми изкарва някакви не реални суми и делители.А ако числата не са в диапазона да опитаме отново да въведем.БЛАГОДАРЯ ВИ много!

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ако не греша, в последният цикъл getchar() ще сработи само ако си въвел число извън интервала 1-99 . Такава ли ти е идеята?

И не си ли учил алгоритъма за намиране на НОД? :) 

 

input a;

Input b;

while not(a=b)

   If  a>b  a:=a-b;

   if  a<b  b:=b-a;

end.

printf a.

 

Само си оправи синтаксиса, че тези неща съм ги правил преди 25 години, и си ги спомням много смътно ...

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ако не греша, в последният цикъл getchar() ще сработи само ако си въвел число извън интервала 1-99 . Такава ли ти е идеята?

И не си ли учил алгоритъма за намиране на НОД? :)

 

input a;

Input b;

while not(a=b)

   If  a>b  a:=a-b;

   if  a<b  b:=b-a;

end.

printf a.

 

Само си оправи синтаксиса, че тези неща съм ги правил преди 25 години, и си ги спомням много смътно ...

Не,не идеята ми е,че понеже тоя компилатор е малко бъгав и с

getchar
тоест го използвам,за да ми се задържа екрана щото иначе веднага се затваря .

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Айде сега, компилатора бил бъгъв, като ползваш не която трябва функция и не където трябва.

#include<stdio.h>void input(int*a);int ND(int b);int main(void){     int a,b,c,sum;     input(&a);     input(&b);     input(&c);     sum=a+b+c;     printf("%d ",ND(a));     printf("%d ",ND(b));     printf("%d ",ND(c));     printf("%d",sum);     getch();}     int ND(int a){     int x=a/2;     for(;x>0;x--)         if(a%x==0) return x;}void input(int*a){     do {         printf("n=");         scanf("%d",a);     } while(*a <=0 || *a>=100);} 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Само си оправи синтаксиса, че тези неща съм ги правил преди 25 години, и си ги спомням много смътно ...

Позабравил си и алгоритъма. Трябва да е остатък, а не изваждане. След което трябва да се проверява, да не станат a или b нула, че делението е противопоказно :P. Само че, като гледам, тука не се търси най-големия делител на 3 числа, а най-големите делители на всяко от числата.

Ако не греша, в последният цикъл getchar() ще сработи само ако си въвел число извън интервала 1-99 .

Цикълът не обхваща getchar, така че няма проблеми за това. Обаче така, като чета, се чудя, що е накрая на функцият input, а не накрая на main. Така ще се извика 3 пъти, когато не трябва, но не и баш когато трябва :P

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Само че, като гледам, тука не се търси най-големия делител на 3 числа, а най-големите делители на всяко от числата.

 

Прав си, аз не съм прочел както трябва :go ahead: . Помислих, че става дума за намиране на най-големия общ делител.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

 

Айде сега, компилатора бил бъгъв, като ползваш не която трябва функция и не където трябва.

#include<stdio.h>void input(int*a);int ND(int b);int main(void){     int a,b,c,sum;     input(&a);     input(&b);     input(&c);     sum=a+b+c;     printf("%d ",ND(a));     printf("%d ",ND(b));     printf("%d ",ND(c));     printf("%d",sum);     getch();}     int ND(int a){     int x=a/2;     for(;x>0;x--)         if(a%x==0) return x;}void input(int*a){     do {         printf("n=");         scanf("%d",a);     } while(*a <=0 || *a>=100);} 

Много ти благодаря,а и на другите също за указаната помощ.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

×
×
  • Добави ново...