tbgspitfire Публикувано Април 8, 2011 Report Share Публикувано Април 8, 2011 За домашно ми дадоха да направя програма която да чете цели числа от стандартния вход, докато стигне до EOF или възникне грешка при четене.След това да отпечетва най-голямото и най-малкото прочетено число. Нещо не мога да я измисля. Моля, който знае да помогне. Цитирай Link to comment Сподели другаде More sharing options...
kras4ooo Публикувано Април 8, 2011 Report Share Публикувано Април 8, 2011 Ето програмката #include <stdio.h> int main() { int Stoinost;//Promenliwata za stoinost int Minimum,Maximum;//promenlivite za max i min stoinost scanf("%d", &Minimum);//wuwejda se 4islo za da moje max i min da go priemat ina4e programata gurmi Maximum = Minimum;//priemane na stojnostta while(scanf("%d",&Stoinost)==1)//wuwejdame 4isla dokato ne stigne do EOF ili gre6ka;Pi6eme ==1 za6toto scanf pri gre6ka wru6ta 1-ca { if(Minimum > Stoinost)//uslowite za prowerka na minimalnata stoinost { Minimum=Stoinost; } if(Maximum < Stoinost)//uslowite za prowerka na maximalnata stoinost { Maximum=Stoinost; } } printf("Minimalna=%d\n",Minimum);//izwejdane na minimalnata printf("Maximalna=%d\n",Maximum);//izwejdane na maximalnata return 0; } Цитирай Link to comment Сподели другаде More sharing options...
tbgspitfire Публикувано Април 8, 2011 Author Report Share Публикувано Април 8, 2011 Много благодаря! Цитирай Link to comment Сподели другаде More sharing options...
dakan Публикувано Април 9, 2011 Report Share Публикувано Април 9, 2011 Само не разбирам защо използваш 1 вместо "true" в ред:while(scanf("%d",&Stoinost)==true)Виж че true изглежда доста по добре И освен това програмата никога няма да ти изведе грешка нито пък EOF. Особено забавно става като ваведеш от първия пън нещо от рода на "fsdljkh" примерно. Давам ти домашно да си намериш грешката. Цитирай Link to comment Сподели другаде More sharing options...
kras4ooo Публикувано Април 9, 2011 Report Share Публикувано Април 9, 2011 Колега така по-добре ли е? #include <stdio.h> int main() { int Stoinost,q=1; int Minimum,Maximum; while(scanf("%d", &Minimum)!=true) { printf("ERROR\n"); q=0; break; } Maximum = Minimum; while(scanf("%d",&Stoinost)==true) { if(Minimum > Stoinost) { Minimum=Stoinost; } if(Maximum < Stoinost) { Maximum=Stoinost; } } if(q) { printf("Minimalna=%d\n",Minimum); printf("Maximalna=%d\n",Maximum); } return 0; } Само не разбирам защо използваш 1 вместо "true" в ред:while(scanf("%d",&Stoinost)==true)И освен това програмата никога няма да ти изведе грешка нито пък EOF.Мисля че тук си сбъркал. Цитирай Link to comment Сподели другаде More sharing options...
dakan Публикувано Април 9, 2011 Report Share Публикувано Април 9, 2011 Значи ти започваш с проверка за грешка/проверка дали числото, което е въведено е интежер. Ако първото ти въвеждане е нещо различно от интежер програмата ти спира. До тук добре, ама ако първото ти число е интежер, а второто е буква програмата няма да изведе грешка, само ще излезе от цикла.Не го приемай лично. И аз няма да кажа, че съм спец. И по скоро просто се забавлявам с тази програма и не искам да те ядосвам или нещо подобно. Така или иначе, човека вече си е предал домашното синорно Но е добре да се тества за проблем при всяко въвеждане, а не само при първото. За съжаление съм те объркал. Аз отдавна не съм се занимавал с С. Оказа се че в С няма дори boolean който има само две стойности true и false. така че си абсолютно прав, че не ги използваше преди. Забавното е че като ги използваш програмата пак върви, обаче защото компилаторите си мислят, че е програма на С++ а не на С. Като го настроиш да разпознава само С, "true/false" ти дават грешка. Така че се използва 0 и 1 като алтернативи явно ... забавно.Ами ето и моите модификации>#include <stdio.h> #include <stdlib.h> // zaradi system("PAUSE"); int main(void) { int q=1, Stoinost, Minimum, Maximum; while(scanf("%d",&Stoinost)==1){ if (q == 1){ // pyrvo vyvejdane ako e pravilno Minimum = Stoinost; Maximum = Stoinost; q = 0; } if(Minimum > Stoinost) { Minimum=Stoinost; } if(Maximum < Stoinost) { Maximum=Stoinost; } } /* Pri grehno vavejdane ot pyrviq pyt, Programata se prekratqva, za6toto nqma vyvedeni pravilno Integer 4isla. Ako prodylji 6te pokaje stoinostite na Minimum i Maximum kojto sa proizvolni predi pyrvoto im zadavane. */ if(q==1){ fprintf(stderr, "Vyveli ste ne6to razli4no ot Integer\n"); system("PAUSE"); //Pauza predi kraq na Programata, samo po jelanie return; } fprintf(stderr, "Vyveli ste ne6to razli4no ot Integer\n"); // priemame 4e vinagi e fakt na tova mqsto printf("Minimalna=%d\n",Minimum); printf("Maximalna=%d\n",Maximum); system("PAUSE"); //Pauza predi kraq na Programata, samo po jelanie return 0; }digit1.exe.txtdigit1.c.txt Цитирай Link to comment Сподели другаде More sharing options...
kras4ooo Публикувано Април 9, 2011 Report Share Публикувано Април 9, 2011 Колега аз не се ядосвам спокойно,но целта на тази задача не е да изкарва грешка,а да ти изведе максимална и минимална стойност.От друга страна може и да се направи и с "true" и "false",само трябва да се дефинират макроси.А това в началото се прави и извежда "ERROR",защото просто не е въведено никакво число.От друга страна ако ще казваме за бъгове тя има още например като сме въвели число и буква трябва да го сметне цялото за грешно,а не само да извежда числото и да казва че има грешка,но това са вече подробности.От друга страна никъде в условието не пише да извежда грешки!Мисля да спрем вече да спорим за някъкви глупости. Цитирай Link to comment Сподели другаде More sharing options...
dakan Публикувано Април 9, 2011 Report Share Публикувано Април 9, 2011 Съгласен съм. Чакаме следващото домашно да се изваждат, прибавят и заменят букви от текст Цитирай Link to comment Сподели другаде More sharing options...
Препоръчан пост
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.