Эм.. Точно, чет затупил, сори) Но проблема актуальна, как определить длину упорядоченной части массива?
warkk Code: t:=0; for i:=0 to n-1 do begin if m[i]<m[i+1] then k:=k+1 else k:=1; if t<k then t:=k; end;
Turbo Pascal Дан массив размера N.Осуществить циклический сдвиг элементов массива вправо на одну позицию с запоминанием первого элемента исправте что неправильно. var a:array [1..100] of integer; i,n,temp:integer; begin writeln('Vvedite n='); readln(n); writeln('Vvedite massiv'); for i:=1 to n do readln (a); for i:=n downto 2 do a:=a[i-1]; for i:=1 to n do i:=1; temp:=a[i+1]; a[i+1]:=a; temp:=a[n]; a[1]:=a[n]; writeln (a); readln; end.
2 >>serhio<< Ну сдесь В цикле у тебя выполнятеся только i:=1 тобишь после for i:=1 to n do нужен begin end; И я не пойму зачем ты в цикле каждый раз присваиваешь переменной i значение одиницы? И что ты пытаешся сделать в этой чати?
Дана строка s, содержащая от 2 до 25 слов, в каждом из которых от 1 до 8 строчных латинских букв. Между соседними словами стоит не менее одного пробела, за последним словом - точка. Напечатайте слова строки, которые отличны от последнего слова и первая буква слова входит в него еще раз. Нужно написать на СИ. Спасибо заранее.
Всем привет! У меня 5 лабараторных! Они сделаны только криво работают, очень прошу посмотрите что не так в коде!:
В лабе 8 по-хорошему должно быть так: Code: Program PR8; Uses Crt; Const n=15; Var D:array [1..n] of integer; b,i:integer; begin TextAttr:=$4B; // зачем это вообще не знаю... ClrScr; randomize; for i:=1 to n do begin D[i]:=random(20)-10; write(D[i]:4); end; writeln; for i:=1 to n do begin IF D[i]>5 then D[i]:=D[i] div 3 // так как у нас массив интежеров. else D[i]:=D[i]+4; writeln (D[i]:4:2); end; writeln; readln; end. В лабе 9 вместо того, чтоб искать произведение отрицательных элементов - ищет положительные. Code: Лаба 12 Задание Дан массив O(15,3) Найти произведение отрицательных элементов массива и подсчитать их количество. Решение: Program PR12; Uses Crt; Const n=5;m=3; //тут указывается, что матрица у тебя 5 на 3 а не 15 на 3. Var O:array [1..n, 1..m] of integer; i,j,p,k:integer; begin TextAttr:=$4B;ClrScr; randomize; for i:=1 to n do begin // здесь не было for по j for j:=1 to m do begin O[i,j]:=random(20)-10; write(O[i,j]:4); end; writeln; end; p:=1; k:=0; for i:=1 to n do for j:=1 to m do begin IF O[i,j]<0 then p:=p*O[i,j]; K:=K+1; // это можно заменить на inc(K); end; writeln ('p=',p:5); writeln ('k=',k); readln; end. А остальное вроде правильно. Помог бы кто мне с моей лабой... В которой нужно разработать компилятор языка похожего на пхп... Скорее даже не компилятор, а транслятор в ассемблерный код.
Помогите пожалуйста сделать работу. Язык Си. Буду очень благодарен помощи. Задачка: Создать оконное приложение. В клиентской области осуществить вывод графика предложенной вам функции. График функции должен быть дополнен координатными осями с указанием единичных отрезков. Создать диалоговое окно, позволяющее производить выбор диапазона вывода значений функции и осуществлять подписи на осях графика. Создать диалоговое окно, позволяющее производить масштабирование графика. Создать диалоговое окно, позволяющее производить смещение центра координат графика. Создать диалоговое окно, позволяющее изменять задаваемые параметры функции. Создать диалоговое окно в котором можно будет задавать цвета графика и координатных осей, и стиль линий для координатных осей. Рисунок варианта: http://img130.imageshack.us/img130/9003/clipimage002f.gif
Матрицу K(m,n) заполнить слудующим образом. Элементам, находящимся на периферии (по периметру матрицы), присвоить значение периметру оставшейся матрицы - значение 2 и т.д. до заполнения матрицы. Это как я понял должно быть что-то вроде: 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 9 9 9 9 9 9 1 0 0 1 9 3 3 3 3 9 1 0 0 1 9 3 2 2 3 9 1 0 0 1 9 3 2 2 3 9 1 0 0 1 9 3 3 3 3 9 1 0 0 1 9 9 9 9 9 9 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 Собственно, это сделал. Дальше: Рассматривая результат предыдущей задачи, как нумерацию слоев матрицы, сдвинуть элементы заданной матрицы в пределах каждого слоя на одну позицию по часовой стрелке. То есть если было 10 0 0 0 0 0 0 0 0 0 10 2 1 1 1 1 1 1 1 0 10 1 3 9 9 9 9 9 1 0 10 1 9 4 3 3 3 9 1 0 10 1 9 3 5 2 3 9 1 0 10 1 9 3 2 2 3 9 1 0 10 1 9 3 3 3 3 9 1 0 10 1 9 9 9 9 9 9 1 0 10 1 1 1 1 1 1 1 1 0 10 0 0 0 0 0 0 0 0 0 Должно стать: 10 10 0 0 0 0 0 0 0 0 10 1 2 1 1 1 1 1 1 0 10 1 9 3 9 9 9 9 1 0 10 1 9 3 4 3 3 9 1 0 10 1 9 3 2 5 3 9 1 0 10 1 9 3 2 2 3 9 1 0 10 1 9 3 3 3 3 9 1 0 10 1 9 9 9 9 9 9 1 0 10 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 Вот что получилось: Code: Program Neprogram; type K=array [0..10,0..10] of integer; Procedure zapolnenie(var x:K); Var m,n,gran,znach,i:integer; Begin randomize; gran:=0; for i:=1 to 10 do begin znach:=trunc((10-1)*random+1); gran:=gran+1; for m:=1+gran to 10-gran do for n:=1+gran to 10-gran do x[m,n]:=znach; end; end; Procedure povorot(var x:K); [COLOR="#ff0000"]//процедура поворота[/COLOR] Var m,n,gran,i,buff,a:integer; Begin x[1,1]:=A; //Это чтоб проверить x[2,1]:=A; поворачивает или нет. x[3,1]:=A; x[4,1]:=A; x[5,1]:=A; x[6,1]:=A; x[7,1]:=A; x[8,1]:=A; x[9,1]:=A; x[10,1]:=A; gran:=0; //Изначально грань = 0 for i:=1 to 5 do //выполняем для x/2 слоев, begin в нашем случае для 5 buff:=x[n+gran,m+gran]; //сохраняем верхнее левое значение [COLOR="YellowGreen"]//считаем левую границу периферии[/COLOR] n:=1+gran; for m:=1+gran to 9-gran do x[m,n]:=x[m+1,n]; [COLOR="YellowGreen"]//нижнюю[/COLOR] m:=10-gran; for n:=1+gran to 9-gran do x[m,n]:=x[m,n+1]; [COLOR="YellowGreen"]//правую[/COLOR] n:=10-gran; for m:=10-gran downto 2+gran do x[m,n]:=x[m-1,n]; [COLOR="YellowGreen"]//верхнюю[/COLOR] m:=1+gran; for n:=10-gran downto 3+gran do x[m,n]:=x[m,n-1]; x[n+gran+1,m+gran]:=buff;//возвращаем утерянное значение gran:=gran+1; //увеличиваем грань end; end; Var x:K; m,n:integer; Begin zapolnenie(x); for m:=1 to 10 do begin writeln(' '); for n:=1 to 10 do write(x[m,n],' '); end; writeln(' '); povorot(x); writeln(' '); for m:=1 to 10 do begin writeln(' '); for n:=1 to 10 do write(x[m,n],' '); end; writeln(' '); end. Пишет ошибку на 35 строке: Code: buff:=x[n+gran,m+gran]; Code: »22098432 - выход за границы диапозона изменения индекса 0..10 Не могу сообразить почему :hmm:
привет момогите с задачками на С++ =) 1.Создать класс студент, который имеет имя, курс и идентификационный номер. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс - студент-дипломник, который содержит тему диплома. Определить конструкторы за умалчиванием и с разным числом параметров, деструкторы, функцию печати. Определить функции переназначения названия диплома и идентификационного номера. 2. Создать класс комната, которая имеет площадь. Определить конструктор и метод доступа. Создать класс однокомнатная квартира, которая содержит комнату и кухню (ее площадь), этаж (комната содержится в классе однокомнатная квартира). Определить конструкторы, методы доступа. Определить public-производный класс однокомнатных квартир разных городов (дополнительный параметр - название города). Определить конструкторы, деструктор и функцию печати. буду очень благодарен!!
Задача по С++! Определить класс квадратная матрица. В класс включить два конструктора для определения матрицы по количеству элементов и путем копирования другой матрицы. Предусмотреть функцию нахождения седловой точки матрицы и функцию, меняющую местами элементы матрицы, симметричные относительно побочной диагонали. Определить класс вектор. В класс включить два конструктора для определения вектора по его размеру и путем копирования другого вектора. При задании вектора по его размеру предусмотреть его заполнение случайными числами. Определить операции над векторами: | формирование нового вектора так, что каждый элемент нового вектора определяется следующим образом: c=(a>b)?b:a; -- определить наименьший элемент вектора. Описать параметризованный класс массив с двумя аргументами. Предусмотреть выполнение функций формирования массива, поиска заданного значения в массиве.
как реализовать данное в консольном приложении на С? Вводим действие допустим 4*6+3. Поскольку только недавно начал изучать С я думал так: Объявить строковую переменную в которой занесется 4*6+3, потом через функцию преобразования строковых переменных в числовые atoi() занести в числовую переменную (при объявлении переменной числовой a=4*3+2 считает нормально) и она посчитает, но так не получается. Выводит только первый символ. То что я пробовал: Code: #include <stdio.h> #include <stdlib.h> int main() { char a[255]; int b; printf("vvedite deistvie: \n"); gets(a); b=atoi(a); printf("Ravno: %d",b); } В голову пришла мысль: записывать все содержимое в txt файл искать сперва символы * и слева и справа от найденного знака числа и перемножать их и.т.д. далее перейти к поиску делений, суммирования. Но как это реализовать?
M.W.N.N. Си не учил, но по аналогии с делфи просто перебираешь строку читаешь каждый символ до первого действия, записываешь в массив, после записываешь какое действие там было, ищешь дальше и тп до конца строки. Также нужны функции или процедуры на сложение вычитание умн и дел, после того как прошол строку берешь первое действие в строке и стравниваешь его с "заготовкой" например если это сложение вызваешь функцию сложения с аргументами первыми элементами массива, ответ записываешь в индекс второго эллемента и продолжаешь.. Но тут не будет превильной последовательности выполнения действий типо сначало умножение а потом сложение, но это не сложно реализовать. ЗЫ надеюсь помог