Регистрирайте сеРегистрирайте се

Много моля за помощ


 
   Форум за математика Форуми -> 5 клас
Предишната тема :: Следващата тема  
Автор Съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Mon Nov 16, 2009 9:56 pm    Заглавие: Много моля за помощ

Извинявам се, знам, че не е това мястото, но имам проблем с едни задачи по Информатика и ви моля за помощ, тъй като бях болен и съм изпуснал малко от материала. Писах в раздела за Информатика, но там никой не ми обръща внимание. Затова, ви моля за извинение отново, че не е тук мястото, но ако някой знае да пише задачи на DEV C++, моля да ми помогне.
А ето и задачите:

Задача E1. Акробат
В някои спортове, като гимнастика, акробатика, ски-скокове и др., изпълнението на всеки спортист се оценява от няколко съдии. След това от всички оценки се премахват най-ниската и най-високата, а от останалите оценки се пресмята окончателната оценка за изпълнение по следния начин – сумата на оценките се разделя на техния брой. Съдиите гласуват така, че крайната оценка е винаги цяло число. Ако максимална или минимална оценка са поставили няколко съдии, то отпада само една от тях.
Напишете програма acrobat, която въвежда оценките a, b, c, d, e, f (a, b, c, d, e, f са цели числа), които поставят шест съдии, намира и отпечатва крайната оценка, която получава всеки спортист.
Вход
От първия ред на стандартния вход се въвеждат стойностите на числата a, b, c, d, e, f, разделени с по един интервал.
Изход
На един ред на стандартния изход програмата трябва да изведе едно цяло число, равно на търсената оценка за изпълнение.

Ограничения
1 ≤ a, b, c, d, e, f ≤ 1000000000000
Пример
Вход Изход
36 24 72 8 10 22 23


Задача E2. Победител
Умко и Сръчко са неразделни приятели. Едно любимо тяхно забавление са игрите. Новата игра, която им подарили техните родители, се състои от карти. На всяка една от тях има написани трицифрени числа. Картите се обръщат така, че играчите да не виждат числата, разбъркват се и от купчината се изтегля произволна карта. Умко и Сръчко виждат числото написано на нея и по зададените в играта правила трябва да образуват ново трицифрено число. Играта печели този от тях, който познае числото пръв.
И така, правилата на играта са следните:
• Играчите събират стотиците и десетиците на числото от картата. Ако резултатът е двуцифрено число, тогава отново събират цифрите му. Получената цифра се записва като първа за новото число;
• Играчите трябва да разпознаят дали цифрата на единиците на числото написано на картата е четно число. Ако то е четно, тогава го удвояват. Ако е нечетно, тогава към него прибавят цифрата на десетиците на числото от картата. Полученият резултат е число, десетиците и единиците на което са втората и третата цифра на новото число.
Понеже Умко бил по-умен и почти винаги бил победител в подобни игри, помогнете на Сръчко да спечели поне в тази игра, като напишете програма winner.
Вход
На първия ред на стандартния вход се въвежда едно цяло число k – трицифреното число, записано върху изтеглената карта.
Изход
Програмата извежда на единствен ред на стандартния изход едно цяло трицифрено число, което трябва да получи победителят в играта.
Примери
Вход Изход
100 100
387 215
624 808


Задача E3. Щастлив номер
Всеки автомобил има регистрационен номер, който се състои от поредица от осем символа. Първите два и последните два са главни латински букви, а останалите – цифри. Един номер е щастлив, ако произведението от цифрите е равно на сумата от кодовете (ASCII-кодовете) на първите две и последните две букви, разделена целочислено на десет.
Напишете програма lucky, която проверява дали даден номер е щастлив.
Вход
На първият ред от стандартния вход се въвежда поредица от осем знака – две главни латински букви, четири цифри и две главни латински букви.
Изход
На един ред на стандартния изход програмата трябва да изведе Yes и произведението от цифрите, разделени с един интервал, ако номера е щастлив и No, в противен случай.
Примери
Вход Изход
AH2131АА No
AF4171QA Yes 28


Това са задачи от 8 Национален есенен турнир по Информатика и Информационни технологии "Джон Атанасов" Шумен 29.11.2008
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Реклама







Пуснато на:     Заглавие: Реклама

Върнете се в началото
martosss
VIP Gold


Регистриран на: 17 Mar 2007
Мнения: 3937
Местожителство: Somewhere over the rainbow
Репутация: 424.2Репутация: 424.2
гласове: 213

МнениеПуснато на: Mon Nov 16, 2009 10:13 pm    Заглавие:

Е на първа и втора кое те затруднява?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
krainik
Фен на форума


Регистриран на: 01 May 2009
Мнения: 697

Репутация: 51.8
гласове: 44

МнениеПуснато на: Mon Nov 16, 2009 10:18 pm    Заглавие:

Мартине, не бъди толкова лош - задачите са за пети клас Wink Утре ще ти разпиша решенията, ако не забравя. 10 клас съм, а пък се занимавам със задачи за 5 клас - ужас Laughing
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Mon Nov 16, 2009 10:22 pm    Заглавие:

#include <iostream>
using namespace std;
int main ()
{
int a,b,c,d,e,f,min,max,chislo;
cin>>a>>b>>c>>d>>e>>f;
if(a<b,c,d,e,f)
{
swap=a;
a=min;
min=swap;
}
else if(b<a,c,d,e,f)
{
swap=b;
b=min;
min=swap;
}
else if(c<a,b,d,e,f)
{
swap=c;
c=min;
min=swap;
}
else if(d<a,b,c,e,f)
{
swap=d;
d=min;
min=swap;
}
else if(e<a,b,c,d,f)
{
swap=e;
e=min;
min=swap;
}
else if(f<a,b,c,d,e)
{
swap=f;
f=min;
min=swap;
}
if(a>b,c,d,e,f)
{
swap=a;
a=max;
max=swap;
}
else if(b>a,c,d,e,f)
{
swap=b;
b=max;
max=swap;
}
else if(c>a,b,d,e,f)
{
swap=c;
c=max;
max=swap;
}
else if(d>a,b,c,e,f)
{
swap=d;
d=max;
max=swap;
}
else if(e>a,b,c,d,f)
{
swap=e;
e=max;
max=swap;
}
else if(f>a,b,c,d,e)
{
swap=f;
f=max;
max=swap;
}
chislo=(a+b+c+d+e+f)/4;
cout<<chislo<<endl;
system ("pause");
return 0;
}

Това е на първа задача. Пише, че има грешка на девети ред.



#include <iostream>
using namespace std;
int main ()
{
int k,stot,des,ed,k_a,stot_a,des_a,ed_a,sbor,des_b,ed_b,sbor_a,pr,des_c,ed_c,sbor_b,des_d,ed_d,swap;
cin>>k;
k=stot*100+des*10+ed;
stot=k/100;
des=k/10%10;
ed=k%10;
sbor=stot+des;
des_b=sbor/10;
ed_b=sbor%10;
sbor_a=des_b+ed_b;
if(sbor/10!=0)
{
swap=sbor;
sbor=sbor_a;
sbor_a=swap;
}
swap=sbor;
sbor=stot_a;
stot_a=swap;
pr=ed*2;
des_c=pr/10;
ed_c=pr%10;
sbor_b=ed+des;
des_d=sbor_b/10;
ed_d=sbor_b%10;
if(ed%2=0)
{
swap=des_c;
des_c=des_a;
des_a=swap;
swap=ed_c;
ed_c=ed_a;
ed_a=swap;
}
else
{
swap=des_d;
des_d=des_a;
des_a=swap;
swap=ed_d;
ed_d=ed_a;
ed_a=swap;
}
k_a=stot_a*100+des_a*10+ed_a
cout<<k_a<<endl;
system ("pause");
return 0;
}

На втора задача. Грешката е в тридесети ред.


Последната промяна е направена от dynata на Mon Nov 16, 2009 10:45 pm; мнението е било променяно общо 1 път
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
martosss
VIP Gold


Регистриран на: 17 Mar 2007
Мнения: 3937
Местожителство: Somewhere over the rainbow
Репутация: 424.2Репутация: 424.2
гласове: 213

МнениеПуснато на: Mon Nov 16, 2009 10:32 pm    Заглавие:

И в двете задачи не си дефинирал swap Smile
Иначе доста дълъг метод(не сте ли учили цикъл for? )
Освен това мисля, че подходът ти chislo = (a+b+c+d+e+f)/4 не е правилен
В условието пише, че се вадят максимална и минимална оценка, така че трябва от сборът a+b+c+d+e+f да извадиш минималното и максималното число и чак след това да разделиш резултата на 4. Smile
Сега обаче като ти гледам логиката на сравнение изобщо май не е вярна Sad Пробвай така
слагаш МАХ=а, после сравняваш МАХ с b,c,d,e,f, като за МАХ запазваш по-голямото число. накрая имаш МАХ - най-големият елемент. по същия начин за МIN


За втората задача май си я копирал същата...


Последната промяна е направена от martosss на Mon Nov 16, 2009 10:38 pm; мнението е било променяно общо 1 път
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Mon Nov 16, 2009 10:37 pm    Заглавие:

Първата задача стана. Благодаря ти много!!! А за втората не те разбрах. Ще помисля малко и ще пиша какво е родил моя мозък.



Едит:На втора задача съм дефинирал swap(дефинирането беше онова със int, нали). Явно не е там грешката.


Едит2:Едитвам.


Поправих го.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Mon Nov 16, 2009 11:03 pm    Заглавие:

Оправих го. Но на този source(долу) излиза, че няма грешки, но вместо искания изход(23) излиза 27. На първа задача.


#include <iostream>
using namespace std;
int main ()
{
int a,b,c,d,e,f,min,max,chislo,swap;
cin>>a>>b>>c>>d>>e>>f;
swap=a;
a=max;
max=swap;
if(max<b)
{
swap=b;
b=max;
max=swap;
}
if(max<c)
{
swap=c;
c=max;
max=swap;
}
if(max<d)
{
swap=d;
d=max;
max=swap;
}
if(max<e)
{
swap=e;
e=max;
max=swap;
}
if(max<f)
{
swap=f;
f=max;
max=swap;
}
swap=b;
b=min;
min=swap;
if(min<a)
{
swap=a;
a=min;
min=swap;
}
if(min<c)
{
swap=c;
c=min;
min=swap;
}
if(min<d)
{
swap=d;
d=min;
min=swap;
}
if(min<e)
{
swap=e;
e=min;
min=swap;
}
if(min<f)
{
swap=f;
f=min;
min=swap;
}
chislo=(a+b+c+d+e+f)/4;
cout<<chislo<<endl;
system ("pause");
return 0;
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
martosss
VIP Gold


Регистриран на: 17 Mar 2007
Мнения: 3937
Местожителство: Somewhere over the rainbow
Репутация: 424.2Репутация: 424.2
гласове: 213

МнениеПуснато на: Mon Nov 16, 2009 11:45 pm    Заглавие:

Пробвай с това, дано да стане Razz За мен основната уловка тук е, че тези числа са <1 000 000 000, тоест трябва да ги дефинираш като "големи", тоест long unsigned(така хващаш от 1 до 4 милиарда и кусур)
Ще е добре също така да добавиш проверка дали тези числа изпълняват условието(защото може да ти въведа отрицателни числа и тогава ще се чудиш какво става Very Happy )
Код:
#include <iostream>
using namespace std;
int main ()
{
long unsigned int a,b,c,d,e,f,min,max,chislo;//4islata moje da sa mnogo golemi - do 4 miliarda
cin>>a>>b>>c>>d>>e>>f;
max=a;//slaga6 max i min da sa purvoto i sravnqva6 s ostanalite
min=a;//vse edno ot tqx 6te e po-golqmo ot vsi4ki ostanali
if(max<b) max=b;
if(max<c) max=c;
if(max<d) max=d;
if(max<e) max=e;
if(max<f) max=f;

if(min>b) min=b;
if(min>c) min=c;
if(min>d) min=d;
if(min>e) min=e;
if(min>f) min=f;
chislo=(a+b+c+d+e+f-min-max)/4;//nakraq ot vsi4kite vadim min i max i delim na broq im
cout<<chislo<<endl;//moje6 i napravo da pi6e6 cout<<(...)/4, bez otdelna promenliva :)
system ("pause");
return 0;
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Baronov
Напреднал


Регистриран на: 05 Jun 2008
Мнения: 316

Репутация: 55.4
гласове: 39

МнениеПуснато на: Tue Nov 17, 2009 1:44 am    Заглавие:

martosss написа:
Пробвай с това, дано да стане Razz За мен основната уловка тук е, че тези числа са <1 000 000 000, тоест трябва да ги дефинираш като "големи", тоест long unsigned(така хващаш от 1 до 4 милиарда и кусур)


В int можеш да пазиш числа до (малко над) 2 милиарда.

long (разбира се, в С++ е long long или int64 в зависимост от компилатора) пази числа до [tex]10^{18}[/tex].
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Baronov
Напреднал


Регистриран на: 05 Jun 2008
Мнения: 316

Репутация: 55.4
гласове: 39

МнениеПуснато на: Tue Nov 17, 2009 1:58 am    Заглавие:

E2:
Код:


#include<stdio.h>


int main() {
   int k;
   scanf("%d", &k);
   int a = k%10;
   k /= 10;
   int b = k%10;
   k /= 10;
   int c = k%10;
   int d = b + c;
   if (d > 10) {
      d -= 9;
   }
   int e = 0;
   if (a%2 == 0) {
                 e = 2*a;
   }else {
       e = a + b;
   }   
   if (e >= 10) {
      printf("%d%d\n", d, e);
   }else {
      printf("%d0%d\n",d, e);   
   }
   return 0;
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Baronov
Напреднал


Регистриран на: 05 Jun 2008
Мнения: 316

Репутация: 55.4
гласове: 39

МнениеПуснато на: Tue Nov 17, 2009 2:06 am    Заглавие:

E3:


Код:

#include<stdio.h>

int main() {
   char s[9];
   scanf("%s", &s);
   int prod = (s[2] - '0')*(s[3] - '0')*(s[4] - '0')*(s[5] - '0');
   int sum = (s[0] + s[1] + s[6] + s[7])/10;
   if (prod == sum) {
      printf("Yes %d\n", prod);
   } else {
      printf("No\n");
   }
   return 0;
}

Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
martosss
VIP Gold


Регистриран на: 17 Mar 2007
Мнения: 3937
Местожителство: Somewhere over the rainbow
Репутация: 424.2Репутация: 424.2
гласове: 213

МнениеПуснато на: Tue Nov 17, 2009 11:20 am    Заглавие:

Baronov написа:
martosss написа:
Пробвай с това, дано да стане Razz За мен основната уловка тук е, че тези числа са <1 000 000 000, тоест трябва да ги дефинираш като "големи", тоест long unsigned(така хващаш от 1 до 4 милиарда и кусур)


В int можеш да пазиш числа до (малко над) 2 милиарда.

long (разбира се, в С++ е long long или int64 в зависимост от компилатора) пази числа до [tex]10^{18}[/tex].

Хах това не го знаех, тука в един учебник пише за Borland C++ и Turbo C++, че допустимите стойности са им други, явно не е вярно Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Tue Nov 17, 2009 3:22 pm    Заглавие:

Baronov, ако можеш да напишеш решенията малко по-простичко, защото голяма част от написаното не съм го учил.

martosss, благодаря.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Tue Nov 17, 2009 6:35 pm    Заглавие:

martosss, ще ми помогнеш ли за втора и трета задача?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
martosss
VIP Gold


Регистриран на: 17 Mar 2007
Мнения: 3937
Местожителство: Somewhere over the rainbow
Репутация: 424.2Репутация: 424.2
гласове: 213

МнениеПуснато на: Tue Nov 17, 2009 8:28 pm    Заглавие:

Baronov написа:
E2:
Код:


#include<stdio.h>


int main() {
   int k;
cin>>k;   //scanf("%d", &k);
   int a = k%10;
   k /= 10;
   int b = k%10;
   k /= 10;
   int c = k%10;
   int d = b + c;
   if (d > 10) {
      d -= 9;
   }
   int e = 0;
   if (a%2 == 0) {
                 e = 2*a;
   }else {
       e = a + b;
   }   
   if (e >= 10) {
cout<<d<<e<<"\n";      //printf("%d%d\n", d, e);
   }else {
cout<<d<<e<<"\n";      printf("%d0%d\n",d, e);   
   }
   return 0;
}


Би трявало това да е вариантът на baronov, кажи сега разбираш ли всичко Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Tue Nov 17, 2009 10:01 pm    Заглавие:

printf, scanf и stdio.h не съм ги учил.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
martosss
VIP Gold


Регистриран на: 17 Mar 2007
Мнения: 3937
Местожителство: Somewhere over the rainbow
Репутация: 424.2Репутация: 424.2
гласове: 213

МнениеПуснато на: Tue Nov 17, 2009 10:27 pm    Заглавие:

е принт - печатам, демек cout, scanf - сканирам, демек cin... stdio.h логично да е библиотеката, с която се декларират тези функции Wink както и да е, вместо това четеш cout и cin Smile Лошото е, че на някои от тестовете с програмата на баронов ми изяжда нулите :S
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Wed Nov 18, 2009 5:58 pm    Заглавие:

Какво означава
k /= 10
и
d - = 9 ???
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
martosss
VIP Gold


Регистриран на: 17 Mar 2007
Мнения: 3937
Местожителство: Somewhere over the rainbow
Репутация: 424.2Репутация: 424.2
гласове: 213

МнениеПуснато на: Wed Nov 18, 2009 9:22 pm    Заглавие:

k=k/10 и d=d-9 Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Mon Nov 23, 2009 4:19 pm    Заглавие:

Задача1. Детайли
В едно предприятие се произвеждат три изделия i1, i2 и i3, като за тях са необходими детайлите d1 и d2 в следните количества: за изделието i1 – само 2 детайла d1, за изделието i2 – 4 детайла d2, за i3 – 5 детайла d1 и 4 детайла d2. Да се състави програма DETAILS.CPP, която по номера на дадено изделие и налични количестава от детайлите определя колко броя от това изделие могат да се произведат.
Примерен вход: 1 12 14
Примерен изход: 6
Примерен вход: 3 18 30
Примерен изход: 3



Като напиша първия примерен вход ми изкарва 6, но на втория ми вади грешно число.
Ето сорса ми:

#include <iostream>
using namespace std;
int main ()
{
int d1,d2,a,n,h;
cin>>a>>d1>>d2;
int otg1=d1/2;
int otg2=d2/4;
int x=d1/5;
h==otg2;
if(x>h)h=n;
else x=n;
switch(a)
{
case 1:cout<<otg1<<endl;break;
case 2:cout<<otg2<<endl;break;
case 3:cout<<n<<endl;break;
}
system ("pause");
return 0;
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
_sssss
Фен на форума


Регистриран на: 07 Dec 2008
Мнения: 633

Репутация: 85.8Репутация: 85.8
гласове: 50

МнениеПуснато на: Mon Nov 23, 2009 5:00 pm    Заглавие:

Добре си се ориентирал, че n=min(h, x), но бъркаш записа. Пишеш h=n или x=n, а трябва n=h или n=x!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Mon Nov 23, 2009 5:14 pm    Заглавие:

Задача3.Лица.
Да се състави програма AREA.CPP, която въвежда от клавиатурата дробно число а и цяло число х, като ако х=1, извежда периметъра на равностарнен триъгълник със страна а. Ако х=2 - лицето на квадрат със страна а и ако х=3 – лицето на кръг с радиус а.
Примерен вход: 3 1
Примерен изход: 9
Примерен вход: 5.2 2
Примерен изход: 27.04

Задачата я решавам, но малко мамя Laughing . Моя сорс:

#include <iostream>
using namespace std;
int main ()
{
double a,x,P,S1,S2;
cin>>a>>x;
P=a*3;
S1=a*a;
S2=3.14*a*a;
if(x=1)cout<<S1<<endl;
else if(x=2)cout<<P<<endl;
else if(x=3)cout<<S2<<endl;
system ("pause");
return 0;
}

А би трябвало да е така:


#include <iostream>
using namespace std;
int main ()
{
double a,x,P,S1,S2;
cin>>a>>x;
P=a*3;
S1=a*a;
S2=3.14*a*a;
if(x==1)cout<<P<<endl;
else if(x==2)cout<<S1<<endl;
else if(x==3)cout<<S2<<endl;
system ("pause");
return 0;
}

Къде бъркам на втория сорс???

ПП Разбрах къде ми е грешката. Мерси за помощта.


Последната промяна е направена от dynata на Mon Nov 23, 2009 6:49 pm; мнението е било променяно общо 3 пъти
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Mon Nov 23, 2009 6:45 pm    Заглавие:

Задача4.
Тухла (ПТИ-2002) Тухла с правилна форма има дължина x см, ширина y см и височина z см. Тези размери са числа и не са по-големи от 1000 см. Напишете програма brick.exe, която въвежда числата x, y и z от клавиатурата и извежда на екрана едно число, равно на минималната площ в кв. см., която трябва да се изреже от ламаринен лист така, че през получената дупка да може да мине тухла.

Къде ми е грешката в този сорс:



#include <iostream>
using namespace std;
int main ()
{
int x,y,z,min,max,min2,otg,pr;
cin>>x>>y>>z;
min=x;
max=x;
if(min>y)min=y;
else if(min>z)min=z;
if(max<y)max=y;
else if(max<z)max=z;
if(min<x<max)min2=x;
else if(min<y<max)min2=y;
else if(min<z<max)min2=z;
pr=min*min2;
cout<<pr<<endl;
system ("pause");
return 0;
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
_sssss
Фен на форума


Регистриран на: 07 Dec 2008
Мнения: 633

Репутация: 85.8Репутация: 85.8
гласове: 50

МнениеПуснато на: Mon Nov 23, 2009 8:03 pm    Заглавие:

Дай по-кратко, де.
Различните стени на тухлата са S1=xy; S2=zy; S3=xz;
Сега просто проверяваш коя е най-малка по площ.

PS. По-добре пускай нови теми, че така е много наблъскано.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Mon Nov 23, 2009 8:38 pm    Заглавие:

Много благодаря за отзива!!!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dynata
Начинаещ


Регистриран на: 13 Dec 2008
Мнения: 55
Местожителство: Пловдив
Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7Репутация: 5.7

МнениеПуснато на: Tue Nov 24, 2009 8:58 pm    Заглавие:

Задача E1. ЛИНИЙКА
Върху линийка с дължина 100000 см са нанесени деления през 1см. Деленията на линийката са номерирани с поредни числа, като в началото и е записано числото 0. Талантливчо поставил върху линийката три летвички, които изработил в часовете по труд и техника. Всяка летвичка поставял на произволно деление и записвал края и дължината й. Да се напише програма RULER, която извежда началото на тази летвичка, което се намира най-близко до началото на линийката.
Вход:
На първите три реда от стандартния вход се въвеждат по две цели числа, разделени с интервал – дължината и края на всяка от летвичките..
Изход
Програмата да изведе цяло число, което показва началото на летвичката, която се намира най-близко до началото на линийката.
Ограничения
Въведените числа са не по-големи от 100000 и не по-малки от 1.
ПРИМЕР
Вход
3 9
8 12
6 15
Изход
4


Къде греша:

#include <iostream>
using namespace std;
int main ()
{
int duljina1,duljina2,duljina3,krai1,krai2,krai3,nachalo1,nachalo2,nachalo3;
cin>>duljina1>>krai1>>duljina2>>krai2>>duljina3>>krai3;
nachalo1=krai1-duljina1;
nachalo2=krai2-duljina2;
nachalo3=krai3-duljina3;
int otg=0;
if(nachalo1<nachalo2,nachalo3)otg+=nachalo1;
if(nachalo2<nachalo1,nachalo3)otg+=nachalo2;
if(nachalo3<nachalo1,nachalo2)otg+=nachalo3;
cout<<otg<<endl;
system ("pause");
return 0;
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
garion
Напреднал


Регистриран на: 10 Jan 2008
Мнения: 373

Репутация: 57.1
гласове: 13

МнениеПуснато на: Wed Nov 25, 2009 3:44 pm    Заглавие:

martosss написа:
Baronov написа:
martosss написа:
Пробвай с това, дано да стане Razz За мен основната уловка тук е, че тези числа са <1 000 000 000, тоест трябва да ги дефинираш като "големи", тоест long unsigned(така хващаш от 1 до 4 милиарда и кусур)


В int можеш да пазиш числа до (малко над) 2 милиарда.

long (разбира се, в С++ е long long или int64 в зависимост от компилатора) пази числа до [tex]10^{18}[/tex].

Хах това не го знаех, тука в един учебник пише за Borland C++ и Turbo C++, че допустимите стойности са им други, явно не е вярно Smile

допустимите им стойности зависят от компилатора и от операционната система, така че това което си прочел най-вероятно е било вярно но само за тези 2 компилатора и при определена операционна система.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:   
   Форум за математика Форуми -> 5 клас Часовете са според зоната GMT + 2 Часа
Страница 1 от 1

 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети
Може да прикачвате файлове
Може да сваляте файлове от този форум
Copyright © 2005-2021 math10.com.