мин от н , задачата за 5 точки

18 views
Skip to first unread message

Светослав Алексиев

unread,
Jun 23, 2013, 3:52:23 PM6/23/13
to prog1...@googlegroups.com
#include<stdio.h>

int main()
{
char c;
int number = 0;
int min = 32767;

while ((c = getchar()) != EOF)
{
if ((c == ' '))
{

if (number < min)
{
min = number;
}
number = 0;

}
if (c >= '0' && c <= '9')
{
number = number * 10 + (c - '0');
}

}

if (number < min)
{
min = number;
}
printf("%d",min);
}


Taka, програмата намира минималното от н числа, сега ще ви я обясня.

Значи почваме да проверяваме, докато не стигне края на файла, пускаме цикъл да проверява празните места, за да разберем къде свършва числото и къде започва следващото, (примерно ако е едноцифрено няма да има нужда от това, но ако е двуцифрено ще се наложи), след това правиме 1вото число да ни е минумма за да имаме база за сравнение с другите числа, после проверяваме дали е число, ако е число number = number * 10 + (c - '0''), трябва да работи с двуцифрени числа, и най накрая последния if e защото като стигне края на файла не проверява последния синвол, дефакто, последния иф ни е само за последния синвол.



Светослав Алексиев

unread,
Jun 23, 2013, 3:56:40 PM6/23/13
to prog1...@googlegroups.com
п.с разбрах че е трябвало да работи и с отрицателни, ето така ще изглежда ако трябва да работи и с отрицателни числа 


#include<stdio.h>

int main()
{
char c;
int number = 0;
int min = 32767;
int is_neg_numb = 1;
while ((c = getchar()) != EOF)
{
if ((c == ' '))
{
number = number * is_neg_numb;
if (number < min)
{
min = number;
}
number = 0;
is_neg_numb = 1;
}
if (c >= '0' && c <= '9')
{
number = number * 10 + (c - '0');
}
if( c == '-')
{
is_neg_numb = -1;
}
}
number = number * is_neg_numb;
Reply all
Reply to author
Forward
0 new messages