
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.87] |
![]() |
|
Страницы: (3) [1] 2 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
я просто проболел и все лекции с обьяснениями пропустил. а программы надо как то сдавать. можете помочь?
1)Дано натуральное число, в котором все цифры различны. Определить: а) порядковые номера двух его максимальных цифр, считая номера: от конца числа; от начала числа; 2)Среди чисел 1,1+1/2,1+1/2+1/3, ... найти первое, большее числа n. ![]() |
Сообщ.
#2
,
|
|
|
Для второго: можно в лоб, а можно, используя: Сумма = ln(k) + 0,577215665... Вам как?
|
Сообщ.
#3
,
|
|
|
Цитата Славян @ я не то скопировал. просто. я сам его сделал ещё давно. но все равно спасибо |
Сообщ.
#4
,
|
|
|
Первое осталось? Оно то хоть то?
![]() |
Сообщ.
#5
,
|
|
|
[quote=Славян,1524767668,3767979][/q
да первое то) это все в код блок надо сделать но он у меня везде просто ошибки выдает Добавлено [quote=Славян,1524760642,3767971][/quote] Дано натуральное число n. Вычислить: а) 1/sin1+1/sin1+sin2+...+1/sin1+...+ sin n вот такое задание |
Сообщ.
#6
,
|
|
|
Что-то со вторым я опять последовательность не распознал. Так:
(sin1 + 1/sin1) + (sin2 + 1/sin1) + (sin3 + 1/sin1) + ... или иное? Добавлено Хм-м... Или там k раз идёт 1/sin1 ? Так: (1/sin1 + 1/sin1 + sin2) + (1/sin1 + 1/sin1 + 1/sin1 + sin3) + ... + (1/sin1 + ...(N раз)... + 1/sin1 + sinN) ? |
Сообщ.
#7
,
|
|
|
Цитата Славян @ 1/sin1+1/sin1+sin2+...+1/sin1+...+ sin n ну она вот такая 1/(sin(1)) + 1/(sin(1)+sin(2)) + ... + 1/(sin1(+)...+ sin(n)) там сборник заданий по програмированию златопольский. 5.93а если так легче будет |
Сообщ.
#8
,
|
|
|
Первое можно через строки провернуть. Схема такая:
![]() ![]() #include <stdio.h> int main() { long n=360521; /* число (надо бы вводить?) */ char bufer[12]; /* буфер для числа */ int myMax1=-1, i, len, posI; itoa( n, bufer, 10); /* переводим число в строку, 10-ичная система счисления) */ len = strlen( bufer ); for( i=0; i<len; i++) if( bufer[i]-'0' > myMax ) myMax = bufer[i]-'0', posI = i; printf("pos=%d", posI); /* пишем положение старшей цифры */ return(0); } |
Сообщ.
#9
,
|
|
|
Цитата Славян @ if( bufer[i]-'0' > myMax ) myMax = bufer[i]-'0', posI = i; ну да. принцип я понял. но вот эта строка что в ней? потому чо тут выдает ошибку if( bufer[i]-'0' > myMax ) myMax = bufer[i]-'0', posI = i; |
Сообщ.
#10
,
|
|
|
Цитата alex____666 @ А-а! Понятно! Кстати, неизвестно же, что ни на каком шаге знаменатель в ноль не обернётся!? Это так, к слову.ну она вот такая 1/(sin(1)) + 1/(sin(1)+sin(2)) + ... + 1/(sin1(+)...+ sin(n)) Можно так(кусок): ![]() ![]() #include <math.h> int main() { int i, n=6; /* какова длина цепи */ double sum=0, sinS=0; /* sinS = сумма синусов */ for( i=1; i<=n; i++) sinS += sin(i), sum += 1/sinS; return printf("%f", sum); } Добавлено Цитата alex____666 @ А напишите, что за ошибка? Мож так сканает:вот эта строка что в ней? потому чо тут выдает ошибку if( bufer[i]-'0' > myMax ) myMax = bufer[i]-'0', posI = i; ![]() ![]() if( (int)(bufer[i]-'0') > myMax ) { myMax = (int)(bufer[i]-'0'), posI = i; } Добавлено В той строке берётся символ, вычитается код символа ноль (получая настоящее машинное число), сравнивается с числом в памяти, записывается (при удаче) в переменную=память и положение (порядковый номер) большего символа тоже записывается. |
Сообщ.
#11
,
|
|
|
Цитата Славян @ Process terminated with status 1 (0 minute(s), 0 second(s)) 1 error(s), 5 warning(s) (0 minute(s), 0 second(s)) вот ошибка соре не то скопировал опять саму ошибку он не дает скопировать |
Сообщ.
#12
,
|
|
|
Хм-м... возможно он беспокоится, что захода в if не будет и posI останется непроинициализированной. Тогда надо изменить там так:
![]() ![]() int myMax1=-1, i, len, posI=0; Добавлено Ну а вообще, надо ж stdlib! ![]() ![]() #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { long n=360521; /* число (надо бы вводить?) */ char bufer[12]; /* буфер для числа */ int myMax1=-1, i, len, posI=0; itoa( n, bufer, 10); /* переводим число в строку, 10-ичная система счисления) */ len = strlen( bufer ); for( i=0; i<len; i++) if( (int)(bufer[i]-'0') > myMax ) { myMax = (int)(bufer[i]-'0'), posI = i; } printf("pos=%d", posI); /* пишем положение старшей цифры */ return(0); } |
Сообщ.
#13
,
|
|
|
Цитата Славян @ да именно так. он бееспокоится что myMax является не обьявленной и пишет "сначала используйте эту функцию" |
Сообщ.
#14
,
|
|
|
А! Косяк мой, единицу забыл!
![]() ![]() #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { long n=360521; /* число (надо бы вводить?) */ char bufer[12]; /* буфер для числа */ int myMax1=-1,myMax2=-1, i, len, posI=0, posI2=0; itoa( n, bufer, 10); /* переводим число в строку, 10-ичная система счисления) */ len = strlen( bufer ); for( i=0; i<len; i++) if( (int)(bufer[i]-'0') > myMax1 ) { myMax1 = (int)(bufer[i]-'0'), posI = i; } for( i=0; i<len; i++) if( (int)(bufer[i]-'0') > myMax2 && (int)(bufer[i]-'0')!=myMax1 ) { myMax2 = (int)(bufer[i]-'0'), posI2 = i; } printf("pos=%d", posI); /* пишем положение старшей цифры */ printf("pos2=%d", posI2); /* пишем положение старшей цифры */ return(0); } |
Сообщ.
#15
,
|
|
|
Цитата Славян @ так, а зачем мы в конце 2 раза обявляем положение старшей цифры7 Добавлено Цитата Славян @ так, а зачем мы в конце 2 раза обьявяем положение старшей цифры? |