PDA

Դիտել ողջ տարբերակը : Կեղծ մետաղադրամի խնդիրը



Stranger
04.03.2009, 20:56
Տրված է մոտաղադրամներ, որոնցից մեկը կամ կեղծ է, կամ ոչ: Տրված է նաև մեկ լրացուցիչ իսկական մետաղդրամ և նժարավոր կշեռք: Պահանջվում է ամենաքիչ կշռումներով գտնել կեղծ մետաղադրամը: Ահա ծրագիրը, միայն թե մի քանի սխալ է տալիս :8 : Կստւգեք:

#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
int main() {
clrscr();
int k, n, flag = -1;
int *mas;
printf("Ներածեք մետաղադրամների քանակը ");
scanf("%i", &n);
mas = (int*)malloc(sizeof(n));
randomize();
k = random (10) + 1;
for (int i = 0; i < n; i++) {
mas[i] = k;
}
for (i = k; i == k; i = random (20));
mas[random (n)] = i;
printf("Մետաղադրամի կշիռն է: ");
for (i = 0; i < n; i++) {
printf("%5i", mas[i]);
if (mas[i] != k) {
flag = i;
}
}
printf("\nԿեղծ մետաղադրամը %i համարի մետաղադրամն է, այն կշռւմ է %i", flag+1,
mas[flag]);
getch();
free(mas);
return 0;
}


Շնորհակալություն:hands

freethinker
07.03.2009, 16:19
printf("\nԿեղծ մետաղադրամը %i համարի մետաղադրամն է, այն կշռւմ է %i", flag+1,
mas[flag]);

մոռացել ես սրանից հետո կանչես ամենակարևոր ֆունկցիան - please() , մնացածը ճիշտ ա :blin

Հովհաննես
22.03.2009, 18:54
Ես մի բան չեմ հասկանում #include <cstdlib> ու դրանից հետո randomize, որը visual basic-um ա աշխատում ավելի պարզ լինելու համար #include <ctime> անեիր ու srand, շատ բարդ ձևով եք լուծել, հա ու մի բան էլ ասեմ այս խնդրի համար ավելի լավ է լոգարիտմ օգտագործեիր, որովհետև այս խնդիրն արդեն լուծված է լոգարիթմներով ճիշտ է չեմ հիշում ինչ էր