На лицо неявное приведение типов. Вы преобразуете дробное число из формата IEE 754 в целочисленное. Работайте в одном формате или используйте приведение типов.
Используйте тег CODE. Глаза режет. И, очень Вас прошу, комментируйте свой код. Ваша задача сводится к поиску вхождения одного массива в другой. Это делается двумя циклами, один из которых вложен в другой.
Help!!! помогите, мне с лабой Написать програму что реализирует две функции с однаковіми именами но разными входящими данными(перегрузка). Функция max, что находит максимальное значение из двух целых чисел и максимальное значения длиннейшего из слов предложения.
STIFFmaster, как то так Code: //фуникция для работы с числами int max(int a, int b) { if (a>b) return a; else return b; } //функция для работы со строкой int max(char * c) { int a; int max=1; while (c!='\0') { if (c==' ') if (a>max) { max=a; a=0; } if (c!=' ') a++; c++; } } З.ы. могут быть мелкие ошибки - давно на С++ не писал, плюс набирал прямо тут, нигде не проверял.
Life а какого черта ты сравниваешь каждый символ подстроки с текущим рассматриваемым символом в строке? ты тогда уж сравнивай со следующими. а еще лучше сделать проверку без привязки к количеству символов строке да и в цикле конечное значение левое какое то Code: int k=0; for ( int i=0; i<30; i++) { if (stroka[i]==podstroka[k]) k++; if ((stroka[i]!=podstoka[k]) && (!k)) k=0; if (k==strlen(podstroka)) cout<<i-k; }
Dieselpro задача можно решить из критерия сходимости для последовательности. Для любого числа ε > 0 существует номер N такой, что при всех n > N и любых натуральных m выполняется неравенство |Xn+m - Xn| < ε. То есть просто проверяем разность текущего и предыдущего значений функции (n - натуральные числа), если он меньше эпсилон, то мы нашли значение этого предела. Плюс поставить ограничение на количество итераций (достаточно большое) или ограничение на значение функции. По достижении которого прекращать поиск и говорить о пределе равном бесконечности или минус бесконечности [Life] у KI11obyte немного неправильно, его функция не найдет строку 'abc' в строке 'aaabc' PHP: int j=0; for (int i=0; i<30 || !(stroka[i]); i++) { if (stroka[i]==podstroka[0]) for (j=0;j<0; i++) { if (!podstroka[i+j]) return 1; if (!stroka[i+j]) return 0; if (stroka[i+j]!=podstroka[j]) break; } } return 0; return 1 - заменить на сообщение что строка найдена, а return 0 - что нет, ну или оформить все в отдельную функцию. Ведь задание гласит - не использовать СТАНДАРТНЫЕ функции, а это будет собственная
Спасибо Gifts, а то смотрю что написал KI11obyte - и сам думаю видать что-то не так... а вот норм. спс.
Хммм.. а почему не найдет? вроде все норм. хотя если в цикле первое и второе условие поменять местами то будет лучше
Мм, да, будет, но все равно - остается определенный класс подстрок, которые не будут найдены, например: aaaaabcde aaaabсde Когда k будет установлен в ноль переменная i будет равна 4, и нам не хватит даже длины слова для поиска. Необходимо каждый раз возвращаться
Не лаба, но нужный для зачёта семинар по инфе... Язык C. Выполнить упражнения, следуя указаниям в doc-файле. Очень прошу, к 11 января нужно. задания http://saveimg.ru/show-image.php?id=a60ed786585359a3b067af75b6e6edf5 doc-файл http://slil.ru/28457448
Pascal. Задача на логику: составить программу, которая по данным составит расписание занятий. Учитель литературы может провести 1, 2, 3 уроки; Учитель физкультуры (физ-ры) может провести 1, 4 уроки; Учитель математики может провести 2, 3, 4 уроки; Учитель технологии (трудов) может провести 3, 4 уроки. Т.е. входные данные такие: 1110 1001 0111 0011 Вывод (к примеру): Литература Математика Технология Физкультура Помогите исходником или расписанным алгоритмом. Буду благодарен.
эм ну по сути простой перебор . алгоритм. если лит-ра 1 то физ-ра 4 математика 2 а труд 3 .... если хочешь в лс все варианты распишу а ввод как осуществляться будет? или просто надо все варианты вывести?
Ребят, помогите плиз, завтра сдавать ... Code: program xyz; uses SysUtils; Function Ru ( S : string ) : string ; VAR T : string ; { временная строка} i : integer ; { номер символа в строке } code : byte ; { код символа } BEGIN T := S ; { получает значение параметра } FOR i := 1 TO Length ( S ) DO { для всех символов строки S} BEGIN { изменяет кодировку символов кириллицы } code := Ord ( S[ i ] ) ; { определяет код символа} CASE code OF { ПРОПИСНЫЕ БУКВЫ } 192 .. 197: T[ i ] :=Chr(code-64) ; { А-Е: 192-197 ->128-133} 168: T[ i ] :=#240; { Ё: 168->240} 198 .. 223: T[ i ] :=Chr(code-64); { Ж-Я : 198-223->128-133} { строчные буквы } 224 .. 229: T[ i ] :=Chr(code-64); { а-е : 224-229->160-165} 184: T[ i ] :=#241; { ё: 184 ->241} 230 .. 239: T[ i ] :=Chr(code-64); { е-п: 230-239->166-175} 240 .. 255: T[ i ] :=Chr(code-16); { р-я: 240-255->224-239} END ; END ; Ru := T ; { возвращает значение временной строки } END; VAR i,j,k,n,temp:integer; // искомые числа repeat_it:boolean; // зацикливание программы (True/False) ans:char; // используется для получения согласия для продолжения работы программы label // идентификатор p1; Function IntSqrt(temp:integer):real; // функция для вычисления квадратного корня. VAR x:real; t:real; begin // начало функции x:=sqrt(temp); // извлечение квадратного корня из числа. if (x-round(x))=0 then t:=x // Если от х отнять округленный х будет равно нулю, тогда t=x. else t:=0; // Либо t=0. end; begin Writeln(Ru('Программа находит все натуральные числа, меньшие чем N, для которых выполняется соотношение a*a + b*b = c*c. [a,b,c < N]')); Writeln; // ... Writeln(Ru('Автор программы ...')); // Вывод информации на экран об авторе программы. Writeln; // ... Writeln('...'); // Вывод на экран - e-mail автора программы. Writeln; p1: // Возврат в это место при ошибке или при повторном вводе данных. repeat_it:=true; // Зацикливание программы, True-правда. while repeat_it=true do begin Write(Ru('Введите число, которое вы хотите проверить: ')); // ... read(temp); Writeln('OTBET: ',IntSqrt(temp):6:0); // Отправить temp на обработку в функцию 'Formula()' и вывести результат на экран. Writeln; // ... Write(Ru('Введите N: ')); // ... Read(n); // Ввод числа N for i:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз. for j:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз. for k:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз. if i*i+j*j=k*k then Writeln('a=',i:4,'; b=',j:4,'; c=',k:4); // Если i*i+j*j=k*k, то выводятся на экран все возможные варианты решения этого уравнения. Writeln; // ... Write(Ru('Вы хотите продолжить работу с программой ? (Y/N): ')); // Предложить продолжить работу с программой. Readln; readln(ans); // Получить согласие. writeln; // ... if (ans='Y') or (ans='y') or (ans=Ru('Н')) or (ans=Ru('н')) then GoTo p1; // Если согласие получено - возврат к началу. break; end; end. Собственно если ввожу N = 6 то выводит ответ a = 3 b = 4 c = 5 a = 4 b = 3 c = 5 то есть нужно чтобы в случае если "с" совпадает несколько раз, тогда чтобы выводилось 1 раз.
Тебе нужно, чтобы с каждым 'c' выводилась только одна пара или чтобы набор чисел в тройке различался в каждом варианте? На будущее - тут нет экстрасенсов, пиши, что делает твоя программа и что должна делать ВНЕ кода. И вовсе не зачем пихать в код всю программу, достаточно проблемного места.
Полная задача программы: Нужно определить функцию, которая возвращает натуральное число, если аргумент функции является квадратом этого числа и ноль в противном случае. Составить программу, которая находит все натуральные числа, меньшие чем N, для которых выполняется соотношение a2(квадрат) + b2(квадрат) = c2(квадрат). Проблема: То есть всё норм работает, кроме того, что когда я получаю в ответе одинаковые "с", то получается что "а" и "b", разные, но числа одинаковые, поэтому программа их выводит, и один вариант получается лишним. то есть, если я ввожу N = 6, я должен получить ответ, только a = 3; b = 4; c = 5 а не два варианта.
ага. Можешь записывать a и b в массив, а потом сравнивать. Больше ничего в голову пока не приходит. Goto буэ ) используй repeat/until ps. а вообще в условии ни слова не сказано про твою "проблему". может это вовсе не проблема?
Нужно 11 января написать прграмму по C# прибл за час, задание передам по icq, обратно также. прогу надо будет начать делать где то около 9-00(время московское), моя аська 428055866 Пишите о цене договоримся, очень надо
Я тоже думал, что не проблема, но преподователь оборвал, сказал сделай так чтобы одинаковые ответы не повторялись. Вот я и думаю как сделать... Может что-то наподобии этого добавить ? Code: Procedure PrintTreangle(n:integer); VAR a,b,c:longint; count:longint; BEGIN FOR a:=1 To n Do For b:=a+1 To n Do Begin c:=IntSqrt(a*a+b*b); if c>0 Then Writeln(a:4, b:4, c:4); Begin Writeln(a:4, b:4, c:4); count:=count+1; if count mod 100=0 Then Readln; end; end; END;