воскресенье, 28 июня 2009 г.

являеца ли число простым?

C помощью рекурсии определить являеца ли число простым?


#include <iostream>

using namespace std;

bool is_simple_inner(int n, int d)
{
if (d == 1) return true;
if (n % d == 0) return false;

return is_simple_inner(n, d-1);
}

bool is_simple(int n)
{
if (n == 1)
return true;

return is_simple_inner(n, n-1);
}

int main()
{
int n;
cout << "input n: ";
cin >> n;

cout << "is simple? " << (is_simple(n) ? "yes" : "no") << endl;

return 0;
}


тут можно скачать исходики

пятница, 26 июня 2009 г.

найти номера строк, элементы в каждой из которых одинаковы между собой

дан двумерный квадратный массив. найти номера строк, элементы в каждой из которых одинаковы между собой.

основная заковырка тут в том что такие

1 2 3

3 1 2

строки считаются одинаковыми, а так же нужно не забывать о том что в строках могут повторяться элементы

1 1 2

2 1 1

это тоже одинаковые строки...

для этого я ввожу в программу вспомогательный массив флагов, в котором отмечаю уже найденые элементы....

смотрим и разбираемся....



const
N = 4;

var
a: array [1..N, 1..N] of integer;
b: array [1..N] of boolean; {вспомогательный массив флагов}
i, j, k, m: integer;
f1, f2: boolean;

begin
{инициализация массива случайными числами}
for i:=1 to N do begin
for j:=1 to N do begin
a[i,j]:=random(3);
end;
end;

{печать массива на экран}
for i:=1 to N do begin
for j:=1 to N do begin
write(a[i, j]:2);
end;
writeln;
end;
writeln;

{ищем совпадения по строчно}
for i:=1 to N do begin
write('строка ', i, ': ');

for j:=1 to N do begin
{саму с собой не проверяем}
if i = j then continue;

{сбросим вспомогательный массив флагов}
for k:=1 to N do begin
b[k]:=false;
end;

f1:=true; {предположим i-я строка равна j-й}
for k:=1 to N do begin
f2:=false; {предположим k-й элемент i-той строки есть в j-й строке }
for m:=1 to N do begin
if (a[i, k] = a[j, m]) and (b[m] = false) then begin
b[m]:=true; {таки есть, отметим это флагом}
f2:=true; {и переходим к след. символу}
break;
end;
end;

if not f2 then begin {символ не найден!}
f1:=false; {строки не равны!}
break;
end;
end;

if f1 = true then begin {строки равны}
write(j:2); {отметим этот факт выводом на экран}
end;
end;
writeln;
end;
writeln;
end.


исходники скачиваем тут

найти для каждой строки число элементов,кратных 5

Для целочисленного двумерного массива найти для каждой строки число элементов,кратных 5,запишите информацию в одномерный массив и найдите наибольший из полученных результатов

const
N = 10;
M = 20;

var
a: array [1..N, 1..M] of integer;
b: array [1..N] of integer;

i: integer;
j: integer;
sum: integer;
max: integer;

begin
{инициализируем массив случайными числами}
for i:=1 to N do begin
for j:=1 to M do begin
a[i, j]:=random(100);
end;
end;

{выведем его на экран}
for i:=1 to N do begin
for j:=1 to M do begin
write(a[i, j]:3);
end;
writeln;
end;
writeln;

sum:=0; {начальная инициализация суммы}
write('кол-во элементов кратных пяти: ');
for i:=1 to N do begin
{находим кол-во элементов кратных 5}
b[i]:=0;
for j:=1 to M do begin
if a[i, j] mod 5 = 0 then begin
b[i]:=b[i]+1;
end;
end;
write(b[i]:3); {вывод на экран}
end;
writeln;

max:=b[1];
for i:=2 to N do begin
if b[i] > max then begin
max:=b[i];
end;
end;

writeln('максимальное из них = ', max);
end.


тут можно скачать оригинал

найдите сумму наибольших значений элементов

дан двумерный массив. найдите сумму наибольших значений элементов его строк

const
N = 10;
M = 20;

var
a: array [1..N, 1..M] of integer;
i: integer;
j: integer;
sum: integer;
max: integer;
begin
{инициализируем массив случайными числами}
for i:=1 to N do begin
for j:=1 to M do begin
a[i, j]:=random(100);
end;
end;

{выведем его на экран}
for i:=1 to N do begin
for j:=1 to M do begin
write(a[i, j]:3);
end;
writeln;
end;
writeln;

sum:=0; {начальная инициализация суммы}
write('max: ');
for i:=1 to N do begin
{находим максимальное значение в строке}
max:=a[i, 1];
for j:=2 to M do begin
if a[i, j] > max then begin
max:=a[i, j];
end;
end;
write(max:3); {вывод на экран}
sum:=sum+max; {накапливаем сумму}
end;
writeln;

writeln('сумма максимальных элементов строк = ', sum);
end.


тут можно скачать отформатированную версию исходников

среда, 24 июня 2009 г.

задача 13

В последовательности А из N элементов каждую группу из рядом стоящих нулей заменить одним нулем . Среди отрезков последовательности , заключенных между парами оставшихся нулей , найти два: с минимальным и максимальным числом элементов. Если оба искомых отрезка существуют, то преобразовать массив так, чтобы между нулями, ограничивающими первый отрезок, оказались элементы второго отрезка , а между нулями, ограничивающими второй отрезок - элементы первого, сохранив порядок следования .
В противном случае в массиве А изменить порядок следования элементов на обратный. Преобразованный массив А выдать на дисплей в строку.


последовательность A из N элементов это

const
N = 50;

var
A: array [1..N] of integer;


отмечу лишь некоторые ключевые моменты, как-то замена рядомстоящих нулей на один

   m:=1; {новый размер массива}
f:=false; {признак повторяющихся нулей}
for i:=1 to N do begin
if A[i] = 0 then begin {если это ноль}
if f then begin {и до этого был ноль}
{ничего не делаем - идём дальше}
end else begin {до этого был НЕ ноль}
f:=true; {выставляем признак начала нулей}
A[m]:=A[i]; {один из них оставляем}
m:=m+1;
end;
end else begin {это НЕ ноль}
f:=false; {сбрасываем признак нуля}
A[m]:=A[i]; {заполняем массив}
m:=m+1;
end;
end;


переворот значений в массиве (эта часть программы почти никогда не будет выполняться, но алгоритм интересный)
      for i:=1 to m do begin
temp:=A[1];
for j:=1 to m-i do begin
A[j]:=A[j+1];
end;
A[m-i+1]:=temp;
end;


полный вариант программы тут

вторник, 23 июня 2009 г.

основные операции с файлами

Составить программу для обработки текстового файла:
1)считывание текста из текстового файла,
2)добавление в него текста,
3)переименование файла,
4) копирование файла,
5) удаление файла


вот тело программы

   {прочитаем построчно}
assign(f, 'file'); { associate it }
reset(f); { open it }
while not eof(f) do { read it until it's done }
begin
readln(f, s);
writeln(s);
end;
close(f);

{допишем}
append(f);
writeln(f, 'new stroka');
close(f);

{переименуем}
rename(f, 'new_file');

{удалим}
erase(f);


тут можно скачать полную версию

поиска двух строк с минимальным/максимальным значением среднего арифметического

Дана числовая таблица С размером N*N. Составить программу поиска двух строк по следующему алгоритму : одной - с минимальным значением среднего арифметического (SR), другой - с максимальным значением SR. Если номер строки с минимальным значением SR больше номера строки с максимальным SR, то обе строки удалить . В противном случае - элементы найденных строк поменять местами. Преобразованную таблицу выдать на экран построчно.


напишем функцию для вычисления среднего арифметического для заданной строки

int get_sr(int j)
{
int sr = 0;
for (int i = 0; i < N; i++)
{
sr += C[j][i];
}

return sr / N;
}


найдём заданные минимум и максимумы

 int max_sr;
int nomer_max_sr;

int min_sr;
int nomer_min_sr;

nomer_max_sr = nomer_min_sr = 0;
max_sr = min_sr = get_sr(0);

for (int j=1; j < N; j++)
{
int sr = get_sr(j);

if (sr < min_sr)
{
min_sr = sr;
nomer_min_sr = j;
continue;
}

if (sr > max_sr)
{
max_sr = sr;
nomer_max_sr = j;
continue;
}
}



а так меняем местами значения строк

  for (int i=0; i < N; i++)
{
int temp = C[nomer_min_sr][i];
C[nomer_min_sr][i] = C[nomer_max_sr][i];
C[nomer_max_sr][i] = temp;
}



как обнуляем элементы при невыполнении условия, а так же полный работающий вариант программы можно скачать здесь

Разделить элементы k-й строки на диагональный элемент

Заданы матрица порядка n и число k. Разделить элементы k-й строки на диагональный элемент расположенный в этой строке. Двумерный массив.

сама соль такая

...
{делим элементы К-ой строки на диагональный элемент}
for i:=1 to N do begin
if a[i,i] = 0 then begin
writeln('внимание! деление на 0!');
break;
end;
a[K, i]:=round(a[K, i]/a[i,i]); {округляем до целого}
end;
...


ну а полный вариант программы можно скачать тут

количество букв русского алфавита

Дана строка, содержащая слова русского и английского языка. Подсчитать количество букв русского алфавита в этой строке.

сделаем функцию определения принадлежности буквы к русскому языку

function is_russia(c: char): boolean;
begin
case c of
{лень перечислять все буквы...}
'a','б','в','г': is_russia:=true;
'А','Б','В','Г': is_russia:=true;
else is_russia:=false;
end;
end;


ну и перебёрем все символы введённой строки с вызовом нашей функции

for i:=1 to length(s) do begin
if is_russia(s[i]) then begin
count:=count+1;
end;
end;


полный вариант программы с комментариями можно скачат тут

число открывающихся и закрывающихся

Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке.

...
{инициализация счётчика}
count:=0;

{переберём все символы строки}
for i:=1 to length(s) do begin
if s[i] = '{' then begin
count:=count+1; {увеличим счётчик скобок}
continue;
end;

if s[i] = '}' then begin
count:=count-1;{уменьшим счётчик скобок}
continue;
end;
end;
...


полный вариант программы с дополнительными проверками можно скачать тут

пятница, 19 июня 2009 г.

Построить симметричный треугольник

Дано 6 целых чисел, определяющих положение вершин треугольника, расположенного в левой половине экрана. Построить на экране этот треугольник, а также треугольник, симметричный данному относительно вертикальной прямой, проходящей через середину экрана.

#include<dos.h>
#include<graphics.h>
#include<conio.h>

main()
{
//инициализация графики
int gd = 0, gm;
initgraph(&gd, &gm,"c:\tc\bgi");

//зададим 6 значений описывающих наш треугольник
int x1 = 10;
int y1 = 10;

int x2 = 200;
int y2 = 30;

int x3 = 200;
int y3 = 200;


//рисуем исходный треугольник
line(x1, y1, x2, y2);
line(x2, y2, x3, y3);
line(x3, y3, x1, y1);

//находим ширину экрана
int x = getmaxx();

//рисуем разделяющую экран линию
line(x/2, 0, x/2, getmaxy());

// находим симетричные середине координаты x, y - не меняется
x1 = x - x1;
x2 = x - x2;
x3 = x - x3;

//рисуем симметричный треугльник
line(x1, y1, x2, y2);
line(x2, y2, x3, y3);
line(x3, y3, x1, y1);

getch(); //не выходим пока не нажмём кнопку
}


рабочий вариант можно скачать тут

чо элемента х в массиве нет??

Дано целое число х и массив a[1..n], отсортированных в порядке неубывания чисел, т.е. для любого k: 1<=1<=n: a[k-1] < a[k]. Найти такое :, что a[i]=x или сообщить, чо элемента х в массиве нет!!


const
N = 10;

var
a: array [1..N] of integer;
i: integer;
x: integer;
found: boolean;

begin
{съэмулируем такой массив как у тебя в задании}
for i:=1 to N do a[i]:=5*i+random(5);

{выведем его на экран}
for i:=1 to N do write(a[i]:4);
writeln; {перевод строки}


write('input x ');
readln(x);

found:=false;
for i:=1 to N do begin
if a[i]=x then begin
found:=true;
break;
end;
end;

write('found ', x, '? ');
if found then writeln('yes') else writeln('no');
end.


скачать рабочие исходники можно тут

вляется ли этот текст десятичной записью целого числа

Задан текст. Выяснить, является ли этот текст десятичной записью целого числа.

что является по сути десятичной записью числа?
это набор символов [0-9] и всё....

var
s: string;
i, j: integer;
f: boolean;

begin
s:='122345.33'; {проверьте еще '11133'}
f:=true;
for i:=1 to length(s) do begin
if (ord(s[i]) < ord('0')) or (ord(s[i]) > ord('9')) then begin
f:=false;
break;
end;
end;

write('is ', s, ' integer? ');
if f then writeln('yes') else writeln('no');

end.


рабочие исходники можно скачать тут

поменять местами первый отрицательный и последний положительный элементы массива

cгенерировать массив А из 15 случайных чисел в диапозоне от -100 до 100.
вывести результат на экран. поменять местами первый отрицательный и последний положительный элементы массива. вывести езультат на экран. учесть возможность отсутствия в массиве отрицательных и положительных элементов


По порядку

  1. генерировать массив A
    for i:=1 to 15 do a[i]:=random(200)-100;

  2. найти первый отрицательный
    first_minus:=0;
    for i:=1 to 15 do begin
    if a[i] < 0 then begin
    first_minus:=i;
    break;
    end;
    end;

  3. убедиться что отрицательное число встретилось
    if first_minus = 0 then writeln('нет отрицательного числа в массиве!');

  4. найди последний положительный
    last_plus:=0;
    for i:=15 downto 1 do begin
    if a[i] > 0 then begin
    last_plus:=i;
    break;
    end;
    end;

  5. убедиться что положительное число встретилось
    if last_plus = 0 then writeln('нет положительного числа в массиве!');

  6. поменять местами найденые элементы
    temp:=a[first_minus];
    a[first_minus]:=a[last_plus];
    a[last_plus]:=temp;


-----

const
   N = 10;

var
   a: array [1..N] of integer;
   i: integer;
   first_minus: integer;
   last_plus: integer;
   temp: integer;

begin
   {init random}
   for i:=1 to N do a[i]:=random(100)-50;

   write('  начальные данные: ');
   for i:=1 to N do write(a[i]:4);
   writeln;

   first_minus := -1;
   for i:=1 to N do begin
      if a[i] < 0 then begin
         first_minus:=i;
         break;
      end;
   end;
   
   if first_minus = -1 then begin
      writeln('нет отрицательных элементов');
      exit;
   end;
   
   last_plus := -1;
   for i:=N downto 1 do begin
      if (a[i] > 0) then begin
         last_plus:=i;
         break;
      end;
   end;
   
   if last_plus = -1 then begin
      writeln('нет положительных элементов');
      exit;
   end;

   temp:=a[first_minus];
   a[first_minus]:=a[last_plus];
   a[last_plus]:=temp;

   write('после перестановки: ');
   for i:=1 to N do write(a[i]:4);
   writeln;
end.

вывод
начальные данные:   29   3  28  -7  -3  40 -44  46   6 -14
после перестановки:   29   3  28   6  -3  40 -44  46  -7 -14

четверг, 18 июня 2009 г.

отсортировать последние отрицательные элементы строка массива

Найти последние отрицательные элементы каждой строки двумерного массива,поместить их в массив Х по возрастанию. (я не разбираюсь в этом напишите код) Забиаем массив:

инициализацию массива случайными числами не пишу - будем подразумевать что понятно как это делается...



а вот остальное - пожалуйста

#include <iostream>

using namespace std;

#define N 5
#defien M 6

int main()
{
int a[N][M];
int b[N];

/* тут задаёшь массив как ты делал */

/* получаем массив с отрицательными числами */
for (int j=0; j < M; j++)
{
for (int i=0; i < N; i++)
{
if (a[N-i-1][j] < 0)
{
b[j] = a[N-i-1][j];
break;
}   
}
}

/* сортируем массив методом пузырька */
for (int i=0; i < N-1; i++)
{
for (int j=i+1; j < N; j++)
{
if (b[j] < b[i])
{
int puzyr = b[j];
b[j] = b[i];
b[i] = puzyr;
}
}
} 

/* выводим на экран */
for (int i=0; i < N; i++)
{
cout << b[i] << endl;
}


return 0;
}



рабочий пример тут

процедура вставки

Напишите процедуру вставки нового элемента в список целых чисел, реализованного на базе массива. В качестве параметров передать указатель на конец списка и номер позиции, на которую вставляется новый элемент.


const
N = 20;

procedure insert(var a: array [1..N] of integer; var last: integer; pos: integer; value: integer);
var
i: integer;
begin
{смещаем относительно pos часть массива на одну позицию}
for i:=last downto pos do begin
a[i+1]:=a[i];
end;
a[pos]:=value; {теперь вставка нашего элемента}
last:=last+1; {изменяем значение индекса последнего элемента в нашем массиве}
end;

var
a: array [1..N] of integer;
i: integer;
last: integer;
begin
{предположим у нас в массиве 10 чисел}
last:=10;

{заполняем массив числами по порядку}
for i:=1 to last do a[i]:=i;

{выведем значения массива для контроля}
for i:=1 to N do write(a[i]:3);
writeln; {перевод строки}

{вставить '44' в массив 'a' на место второго элемента,
где последний элемент с индексом '10'}
insert(a, last, 2, 44);

{выведем значения массива для контроля}
for i:=1 to N do write(a[i]:3);
writeln; {перевод строки}
end.


отформатированные исходники скачать можно тут

вырезать лишние пробелы

В заданном тексте удалить лишние пробелы, оставляя только по одному пробелу между словами.



var
   i: integer;
   f: boolean;
   s: string;
   new_s: string;

begin
   {инициализация переменных}
   s:='More   protests are     expected in     Tehran  after the      main presidential challenger urges     supporters to observe a day of     mourning.';
   new_s:='';
   f:=false; {флаг который говорит о том что пробелы начались}
   
   for i:=1 to length(s) do begin
      if s[i] = ' ' then begin
         if f then begin
            {ничего не делаем}
         end else begin
            f:=true; {начались пробелы}
            new_s:=new_s+s[i]; {один пробел все таки оставим}
         end;
      end else begin
         if f then f:=false; {если был до этого пробел сбросим флаг}
         new_s:=new_s+s[i];
      end;
   end;
   
   writeln(new_s); {и вот результат}

end.

вторник, 16 июня 2009 г.

ctime

Приведите пож. на с++ пример получения дня с помощью ctime

сначала определение по стандарту

Converts the time_t object pointed by timer to a C string containing a human-readable version of the corresponding local time and date.

Конвертирует в время из структуры time_t в строковую переменную завершающуюся нулём в человеко-читаемом формате соотв. локальному времени и дате.

Т.е. грубо говоря кроме получения строки вида "Www Mmm dd hh:mm:ss yyyy" вы ничего не получите с помощью ctime()


/* ctime example */
#include
#include

int main ()
{
time_t rawtime;

time ( &rawtime );
printf ( "The current local time is: %s", ctime (&rawtime) );

return 0;
}


ссылка на рабочий пример

среднее арифметическое значение длин слов в строке

Задан текст . Для каждой строки вычислить среднее арифметическое значение длин слов в строке.

Порассуждаем

  1. Надо как-то определяться где заканчиваются строки - как правило это символ перевода строки 13,10 или 10(в юникс) или "\n"
  2. Нужно как-то определять где заканчивается слово - набор пробельных символов ' ', -, ',', '.', ':', '?', '!', (ничего не забыл?)
  3. Ну и откуда слово начинается - всё кроме перечисленных в пункте 2.
  4. ну и как-то перебрать все символы текста - представим себе текст массивом символов и будем обращаться к нему соов. stroka[i] для доступа к i-тому элементу



...сделал универсальный вариант - с чтением из файла


var
f: text; {переменная описывающая входной текстовый файл}
s: string; {переменная под текущую строку}
i: integer; {переменная текущего символа строки}

delim: string; {здесь будем хранить набор пробельных символов}
j: integer; {переменная тукущего пробельного символа}

n_bukv: integer; {букв в строке}
n_slov: integer; {слов в строке}
is_delimiter: boolean; {признак пробельного символа}
is_slovo: boolean; {признак слова}

Begin
delim := ' ,.;:!?"''&'; {наши пробельные символы}

Assign(f, 'readme.txt'); {откроем файл}
Reset(f); {установим указатель считывания на начало файла}
Repeat
Readln(f, s); {прочитали строку из файла}

{инициализация данных}
is_slovo:=false;
n_bukv:=0;
n_slov:=0;

{определяем является ли текущий символ пробельным}
for i:=1 to Length(s) do begin
is_delimiter:=false; {сначала полагаем что это не пробельный символ}
for j:=1 to Length(delim) do begin
if delim[j] = s[i] then begin
is_delimiter:=true; {если текущая i-я буква пробельный символ - ставим флаг}
break; {и дальше не ищем}
end;
end;

if is_slovo then begin {если было слово}
if is_delimiter then begin {и встретился пробельный символ}
is_slovo:=false; {ставим флаг - признак того что слово закончилось}
end else begin {и это тоже буква}
n_bukv:=n_bukv+1; {увеличиваем счётчик букв строки}
end;
end else begin {до этого был пробельный символ}
if is_delimiter then begin {и это тоже пробельный}
{продолжается пробельный символ - идём дальше}
end else begin {появилась буква!}
n_bukv:=n_bukv+1; {увеличиваем колво букв строки}
n_slov:=n_slov+1; {увеличиваем кол-во слов строки}
is_slovo:=true; {и помечаем что это таки началось слово}
end;
end;
end;

if n_slov <> 0 then begin {если это была не пустая строка}
writeln(s); {печатаем саму строку}
{и результаты наших вычислений}
writeln('bukv=', n_bukv, ' slov=', n_slov, ' avg=', n_bukv div n_slov);
end;
until Eof(f); {читаем пока не конец файла}
Close(f);
End.



скачать отформатированный рабочий вариант можно здесь

пятница, 12 июня 2009 г.

лимитированный ввод

Есть ли какой нибудь оператор ограничивающий кол-во вводимых символов через Input? В Егэ есть задания, где надо вводить например фамилию, но она должна не превышать 20 символов.

такой функции нет - поэтому пишем свою, тем более что она действительно нужна


DECLARE SUB BufInput (StringVar$, Limit%)
'NOTE: DECLARE не поддерживается Microsoft
' Quick Basic версии 3.0 или более ранней версией и может быть удалено

CLS
Limit% = 10 ' Число символов для ввода

' приглашение для ввода строки
LOCATE 10, 5
PRINT "Введите строку из 10 символов: ";
COLOR 0, 7: PRINT SPACE$(Limit%)
LOCATE 10, 46

' ввести строку в буффер
CALL BufInput(a$, Limit%)

COLOR 7, 0
CLS

' вывести результат
LOCATE 10, 10
PRINT "Вы ввели: ";
COLOR 0, 7
PRINT a$
COLOR 7, 0

END

SUB BufInput (StringVar$, Limit%)
BackSp$ = CHR$(8)
Enter$ = CHR$(13)
Length% = 0

' Цикл ожидания ввода. ENTER завершает процедуру
WHILE char$ <> Enter$
char$ = INKEY$
IF char$ <> "" THEN
IF (Length% < Limit%) OR (char$ = BackSp$) THEN
SELECT CASE char$
CASE " " TO "~" ' Ввод только печатных символов
StringVar$ = StringVar$ + char$
PRINT char$;
Length% = Length% + 1
CASE BackSp$ ' если BackSpace - то удалять
IF Length% <> 0 THEN
Length% = Length% - 1
StringVar$ = LEFT$(StringVar$, Length%)
CurrX% = CSRLIN
CurrY% = POS(0) - 1
LOCATE CurrX%, CurrY%
PRINT " "
LOCATE CurrX%, CurrY%
END IF
END SELECT
ELSE
PLAY "o1AL32"
END IF
END IF
WEND

END SUB


тут можно скачать исходники

перевод в двоичную систему

Как на Си или С++ перевести число с 10-го в двоичное?


#include <iostream>

using namespace std;

int main()
{
cout << "input decimal number: ";
int n;
cin >> n;

cout << "decimal: " << n << endl;

// печатаем двоичное число с предшевствующими нулями
cout << "binary : ";
for (int i=31; i>=0; i--)
{
int bit = ((n >> i) & 1);
cout << bit;
}
cout << endl;

return 0;
}


а тут скачать рабочий вариант с форматированием

letitbit качать бесплатно



качать можно и НУЖНО бесплатно!

четверг, 11 июня 2009 г.

как убрать из загрузки системы старую копию Windows

Подскажите пожалуйста как убрать из загрузки системы старую копию Windows?
Я установил Visty на тот же диск где раньше была xp без фоорматирования диска и теперь у меня при загрузке появляется выбор какую операционную систему выбрать но xp я стер а от туда как убрать не знаю как подскажите как ее убрать из Диспетчера загрузок.

посмотрите внимательно на содержимое файла c:\boot.ini



[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU" /execute /fastdetect

ничего вам не напоминают части этих строк?..
его можно отредактировать в обычном notepad.exe

слово с наибольшим вхождением заданного символа

Задан текст. Определить слово с наибольшим вхождением заданного символа.


var
text: string;
i: integer;
count: integer;
slovo: string;
max_count: integer;
max_slovo: string;
c: char;

begin
{наш текст}
text := 'An emergency WHO meeting on swine flu prompts rumours a pandemic will be declared, as Hong Kong shuts primary schools.';

{проверяемый символ}
c:='e';

{начальное значение наших счётчиков}
slovo:='';
max_count:=0;

for i:=1 to length(text) do begin
if text[i] <> ' ' then begin
if text[i] = c then count:=count + 1;
slovo:=slovo+text[i];
end else begin
if count > max_count then begin
max_count:=count;
max_slovo:=slovo;
end;

count:=0;
slovo:='';
end;
end;

writeln('word "', max_slovo, '" has maximum(', max_count, ') of char "', c, '"');

end.


рабочий пример можно скачать тут

перевод в десятичную систему

разработать программу для перевода двоичного числа в десятичное


.8087
text segment byte
assume cs:text,ds:text
org 100h
begin:
; Форматируем
mov ax,1Ah ; 0666
call GetDecimalStr
; Выводим на печать
mov dx,offset DecNum
mov ah,09h
int 21h
ret

GetDecimalStr:
; Пусть в ax будет число, которое надо вывести как десятичное
; Форматируем его, результат записываем в строку
mov cx,10000 ; Начальный делитель
mov di,offset DecNum ; Адрес приемника
cld ; Флаг направления для команды stosb
@@GetDec:
xor dx,dx
div cx ; dx:ax / cx -> ax, остаток в dx
add al,'0' ; Приводим к ASCII
stosb ; Записываем в выходную строку
push dx ; Запоминаем остаток
xor dx,dx
mov ax,cx
mov cx,10
div cx ; Делим делитель на 10
mov cx,ax
pop ax ; Вспоминаем делимое
test cx,cx ; Делитель стал равен 0 ?
jnz @@GetDec
ret
DecNum db '??????',13,10,'$'
text ends
end begin


скачать можно тут

среда, 10 июня 2009 г.

мин. и мах. оставить

найти наибольший и наименьший среди элементов массива. остальные обнулить.


const
N = 10;
var
a: array [1..N] of integer;
i: integer;
imin: integer;
imax: integer;
begin
{заполняем случайными числами}
for i:=1 to N do a[i]:=random(100);

{печатаем на экран, то что мы имеем вначале}
write('before: ');
for i:=1 to N do write(a[i]:3);
writeln;

{начальные значения - просто предположим}
imax := 1;
imin := 1;

for i:=2 to N do begin
if a[i] < a[imin] then imin := i;
if a[i] > a[imax] then imax := i;
end;

{выводим то что мы нашли}
writeln('min is a[', imin, '] = ', a[imin]);
writeln('max is a[', imax, '] = ', a[imax]);

{обнуляем остальные елементы}
for i:=1 to N do if (i <> imin) and (i <> imax) then a[i]:=0;

{печатаем на экран результат}
write('after: ');
for i:=1 to N do write(a[i]:3);
writeln;

end.


тут рабочий пример с форматированием

решение систем уравнений методом крамера

Средствами языка программирования Turbo Pascal решить систему уравнений, используя метод Крамера. Выбор данных из таблицы вариантов

прежде всего нужно почитать что представляет собой метод крамера
а также вычисление определителя матрицы

const n = 3; { размерность матрицы }
type matr = array[1..n, 1..n] of longint;

procedure GetMatr(a:matr; var b:matr; m,i,j:integer);
{ Вычеркивание из матрицы строки и столбца }
var ki,kj,di,dj:integer;
  begin
  di:=0;
  for ki:=1 to m-1 do
    begin
    if (ki=i) then di:=1;
    dj:=0;
    for kj:=1 to m-1 do
      begin
      if (kj=j) then dj:=1;
      b[ki,kj]:=a[ki+di,kj+dj];
      end;
    end;
  end;
  
Function Determinant(a: matr; n: integer) : longint;
{ Вычисление определителя матрицы }
var i,j,d,k:longint;
    b:matr;
  begin
  d:=0; k:=1;
  if (n<1) then
    begin
    writeln('Determinant: Cann''t run. N=',n); halt;
    end;
  if (n=1)
    then d:=a[1,1]
  else if (n=2)
    then d:=a[1,1]*a[2,2]-a[2,1]*a[1,2]
  else { n>2 }
    for i:=1 to n do
      begin
      GetMatr(a,b,n,i,1);
      {writeln('i=',i,' a[',i,',1]=',a[i,1]);
      PrintMatr(b,n-1);}
      d:=d+k*a[i,1]*Determinant(b,n-1);
      k:=-k;
      end;
  Determinant:=d;
  end;
  


var
   a: matr;
   b: array [1..n] of integer;
   i, j, dt: longint;
   temp: integer;
   x: real;

begin
   { Заполнение матриц }
   a[1, 1]:=2;  a[2, 1]:= 5; a[3, 1]:=4; b[1]:=30;
   a[1, 2]:=1;  a[2, 2]:= 3; a[3, 2]:=2; b[2]:=150;
   a[1, 3]:=2;  a[2, 3]:= 10; a[3, 3]:=9; b[3]:=110;
   
   { Вычисление определителя }
   dt := Determinant(a, n);

   for i:=1 to n do begin
      {меняем местами b с текущим стоблцом матрицы a}
      for j:=1 to n do begin
         temp := b[j];
         b[j] := a[i, j];
         a[i, j] := temp;
      end;
      
      x:=Determinant(a, n) / dt;
      writeln('x(', i, ') = ', x:3:0); {поменяйте на нужный формат вывода}
      
      {назад: меняем местами b с текущим стоблцом матрицы a}
      for j:=1 to n do begin
         temp := b[j];
         b[j] := a[i, j];
         a[i, j] := temp;
      end;
   end;
   

end.

возведение числа в степень без math.h

Ребят! Напишите пожалуйста такую программу: программа должна возводить в степень заданное число) скажем 2 в 5 = 32)


void task()
{
unsigned int i;

int x;
int y;
int r;

printf("Input x: ");
scanf("%d", &x);
printf("Input y: ");
scanf("%d", &y);

if (y = 0)
{
r = 1;
}
else
{
r = x;
for (i = 1; i < y; i++)
{
r = r * x;
}
}

printf("x^y=%d\n", r);
}


полный вариант работающей версии тут

или если вам нужен скоростной подход то тут...

Анализ http запросов


Как "выудить" URL с онлайн радио?


Всё что идёт по http-каналу можно отследить программами типа HttpAnalyzer.



позже выложу скриншоты с объяснениями если понадобится...

Скачать можно здесь

смотри также - это интересно

вторник, 9 июня 2009 г.

Portable

скиньте установленный скайп

За что я не люблю Windows - так это за то что при переустаноке системы - нужно заново устанавливать программы....

Но! Спасибо! Нашлись умные люди, которые умеют из обычных программ делать переносные (portable)

Здесь я буду выкладывать Portable версии программы без которых нечего делать на Windows.

Список будет регулярно пополнятся (по мере появления свободного времени), так что заглядывайте сюда почаще... Обещаю - буду выкладывать в чистом (без всякой рекламы и вирусов) виде.

каких элементов больше:отрицательных или положительных?

Помогите с задачей по паскалю. Дан целочисленный массив размера х, посчитать каких элементов положительных или отриц.

const
X = 50;

var
a: array [0..X-1] of integer;
i: integer;
plus: integer;
minus: integer;

begin
{инициализируем массив случайными числами от -50 до 49}
for i:=0 to X-1 do a[i]:=random(100)-50;

{инициализируем начальное число счётчиков}
plus:=0;
minus:=0;

for i:=0 to X-1 do
if a[i] < 0
then
minus:=minus+1
else
plus:=plus+1;

if minus > plus then
writeln('отрицательных (', minus, ') больше чем положительных (', plus, ')')
else
writeln('положительных (', plus, ') больше чем отрицательных (', minus, ')');

end.


отформатированный файл + с учётом когда колво положительных и отрицательных равно можно скачать здесь

переставить местами строки массива по возрастанию сумм строк

Помогите пожалуйста решить задачу по информатике.
Переставить мастами строки массива А так, чтобы суммы элементов строк оказались расположены в порядке возрастания n=6 m=5


решение на Pascal


const
N = 5;
M = 6;

var
a: array [0..N-1, 0..M-1] of integer;
sum: array [0..N-1] of integer; {тут будут храниться суммы строк}
temp: array [0..M-1] of integer; {тут будем хранить }
i: integer;
j: integer;
k: integer;
begin
{инициалицируем массив случайными числами}
for i:=0 to N-1 do
for j:=0 to M-1 do
a[i, j] := random(100);


{подсчитываем суммы строк}
for i:=0 to N-1 do begin
sum[i] := 0; {сначала сумма равна нулю}
for j:=0 to M-1 do sum[i] := sum[i] + a[i, j];
end;

{выводим на экран начальные данные}
for i:=0 to N-1 do begin
for j:=0 to M-1 do write(a[i, j]:3);
writeln(': ', sum[i]:3);
end;
writeln;

{сортируем массив по суммам сетодом пузырька}
for i:=0 to N-1-1 do begin
for j:=i+1 to N-1 do begin
if sum[j] < sum[i] then begin
{меняем местами строки посредством temp - наш пузырёк}
for k:=0 to M-1 do temp[k] := a[i, k];
for k:=0 to M-1 do a[i, k] := a[j, k];
for k:=0 to M-1 do a[j, k] := temp[k];
{меняем местами суммы в массиве sum посредством k - лень заводить новую переменную}
k := sum[i];
sum[i] := sum[j];
sum[j] := k;
end;
end;
end;

{выводим на экран результат}
for i:=0 to N-1 do begin
for j:=0 to M-1 do write(a[i, j]:3);
writeln(': ', sum[i]:3);
end;
writeln;
end.


с форматироваминем и рабочий пример можно скачать здесь

на VBA

в процессе написания...

понедельник, 8 июня 2009 г.

работа со стеком

Записать в стек содержимое регистров AX, BX, CX, DX. Вызвать процедуру, которая бы ссунула содержимое регистра BX, взятый из стека, на количество разрядов, заданную содержимым CX также взятым из стека, и поместила результат в стек на место значения регистра DX. После выполнения процедуры вытянуть из стека содержимое регистров (DX-новое) и поместить их в соответствующие регистры.

  1. Записать в стек содержимое регистров AX, BX, CX, DX

    push AX
    push BX
    push CX
    push DX


  2. Вызвать процедуру которая бы ссунула содержимое регистра BX взятый из стека...

    my_proc proc
    ; заполним регистры соотв. значениями
    pop DX
    pop CX
    pop BX

    ; и вернём их назад, кроме DX
    push BX
    push CX

    ; тут будем сдвигать
    mov AX, BX
    ; в CX уже значение счётчика
    loop:
    shl AX, 1
    jnc loop

    ; и вместо DX теперь занёсем в стек AX
    push AX
    ret
    my_proc endp


  3. после вызова процедуры вернуть всё на место

    call my_proc

    pop DX
    pop CX
    pop BX
    pop AX


вуаля!

сдача с бумажной купюры

решите пожалуйста задачу!

решите пожалуйста задачу по языкам программирования с алгоритмом решения, например
#include <stdlib> и т.д
Составить программу, определяющую сдачу с бумажной купюры достоинством в 1 условную единицу наименьшим количеством монет. В распоряжении автомата, выдающего сдачу, имеются монеты достоинством 1$, 2$, 3$, 4$, 5$, 10$, 20$ и 50$ от условной единицы.


тут можно скачать рабочую программу

типа я маленькая лошадка

помогите создать сборник песен из 90ых)примеры тем песен внутри
тиап найк борзов - маленька ялошадка, три слова
агата кристи - ковер самолет
ЧИЖ - о любви
кафе - товарищ сержант


файлы закачиваются, так что ссылки появятся скоро все... (не забудьте обновить страницу)

где скачать паскаль или каким пользуюсь я

Неработает ни один Паскаль!!!
Что делать у мя ни один Паскаль не пашит комп сильно новый!! Где скачать рабочий можно!!


Решая задачи на Pascal я сначала пользовался Turbo Pascal от Borland, но так как программа ещё под DOS, то по Windows она ведёт себя немного не адекватно, а самое что не приятно грузит процессор и работает в текстовом режиме....

Поэтому для себя я определил что лучшим решением (ну конечно не для профессионалов, а для проработки обычных алгоритмов) годится Pascal ABC.

"Система Pascal ABC предназначена для обучения программированию на языке Паскаль и ориентирована на школьников и студентов младших курсов.
Эта система призвана осуществить плавный переход от простейших программ к модульному, объектно-ориентированному, событийному и компонентному программированию. Многие концепции в Pascal ABC сознательно упрощены, что позволяет использовать их на более ранних этапах обучения. Например, модуль графики обходится без объектов, хотя его возможности практически совпадают с графическими возможностями Borland Delphi. Простейшие событийные программы также можно писать без объектов, пользуясь лишь процедурными переменными. Даже в консольных программах можно создавать таймеры и звуки, которые реализованы без использования объектов. Модули устроены практически так же, как и основная программа: отсутствует разделение на секцию интерфейса и секцию реализации. Тела методов можно определять непосредственно внутри классов, что позволяет создавать классы практически сразу после изучения записей, процедур и функций.
Имеется модуль контейнерных классов (динамические массивы, стеки, очереди, множества), а также библиотека визуальных компонентов.
Компилятор Pascal ABC не генерирует исполняемый код в виде .exe-файла, а создает в результате компиляции дерево программы в памяти, которое затем выполняется с помощью встроенного интерпретатора."


Скачать его вы можете здесь

найти минимальное из N

Найти минимальное из пяти чисел. В подпрограмме реализовать минимальное из дух чисел.
Задачка по теме процедуры и функции на pascal. ((((((


Сначала разберёмся чем отличаются функции от процедур.

В отличие от других языков программирования Pascal имеет функции, которые не возрващают значений - и они называются процедурами.

Например в твоей задаче я создал процедуру инициализации данных - заполнения массива случайными числами





procedure init(var x: our_array_type);
var
i: integer;
begin
for i:=0 to N-1 do x[i] := random(100);
end;


ну а фунция - вычисления минимального значения из двух элементов выглядит так:


function minimum(x: integer; y: integer) : integer;
begin
if x < y then minimum := x else minimum := y;
end;


ну и рабочая программа может быть скачана отсюда

воскресенье, 7 июня 2009 г.

ветвление: найти максимальное

Составить программу на языке программирования с использованием команд ветвления.

Товарищи скадите пож. как составить программу нахождения максимального числа из трех заданных чисел A=5, D=9, C=3 в TURBO BASIC'е

Сравниваем всё между собой и...
Тут для QBasic исходники
тут для Pascal

пятница, 5 июня 2009 г.

скачиваем музыку с "Мой мир" или ВКонтакте

Как скачать музыку с мой мир?

Конечно же для этого есть много вариантов.
Главное понять - что это возможно - иначе как бы это делел браузер? ;-)

Расскажу о способе, которым сам пользуюсь как программист.

Для этого нам понадобится firefox и плагин к нему firebug.

Заходим на нужный сайт, запускаем песню - находим соотв. элемент (см. видео)
извлекаем из него соотв. ссылку и качаем!!

Демонстрационное видео тут

Предыдущий способ умеет скачивать ВСЁ, но

есть специальные сайты которые делают за вас работу поиска ссылок на mp3 и др. типы файлов

посмотрите на http://www.videosaver.ru/ очень ценный ресурс

vb: ввод и вывод чисел

пожалуйста помогите написать программу в Visual Basic 6
Всё должно быть по идее элементарно, но я в чём-то путаюсь...


Вот задание:
Разработать проект,программа которого позволяет вводить неограниченное количество чисел и суммировать их, ограничением является только значение суммы, превышающее 100.Необходимо также подсчитать количество введенных значении и найти их среднее арифметическое. Ввод значении осуществлять в окне ввода



Ну что ж

  1. тут для ввода будем использовать InputBox
  2. для ввода неограниченного кол-ва чисел While...Wend
  3. счётчики суммы и кол-ва чисел - Sum и N соответственно
  4. ну и для вывода MsgBox
  5. ну и всю программу заключаем в единственной форме и одной кнопкой
скачать готовый проект можно тут

четверг, 4 июня 2009 г.

спираль

помогите с паскалем плиииз, совсем его не понимаю....

20 Составить программу, которая заполняет квадратную мат¬рицу порядка п натуральными числами 1, 2, 3, ..n, записывая их в нее «по спирали».(двумерные массивы)







while n < N*N do
begin
if h <> 0 then begin {горизонтальное движение}
if h > 0 then begin {прямо}
if (i + 1 > N - 1) or (A[i + 1, j] <> -1) then begin {вылезли за пределы матрицы или уже заполненое значением поле}
h := 0; v := +1; {меняем направление движения по часовой стрелке}
end;
end else begin {назад}
if (i - 1 < 0) or (A[i - 1, j] <> -1) then begin
h := 0; v := -1;
end;
end;
end else begin {вертикальное движение}
if v > 0 then begin {вниз}
if (j + 1 > N - 1) or (A[i, j + 1] <> -1) then begin
v := 0; h := -1;
end;
end else begin {вверх}
if (j - 1 < 0) or (A[i, j - 1] <> -1) then begin
v := 0; h := +1;
end;
end;
end;

A[i, j] := n;

i := i + h;
j := j + v;

n := n + 1;
end;



готовый рабочий код можно скачать здесь

редактирование звука

Ребята, можете подсказать, как называется программа, в которой можно песни вырезать??

или

Дайте сылку или назовите звукозаписывающую программу для зоздания собственных песен только чтоб программа вся была только на русском языке!!!!Заранее спасибо)

Программ конечно же очень много, ну вот например одна из них (выбор пал на неё из-за того что она существует под разными операционными системами, т.е. переучиваться не дано будет в случае чего) - audiocity


Думаю нетрудно разобраться как тут записывать звук с микрофона или с другого входа...

вот вкратце как это делается с помощью неё

1. открываем нужный файл


2. выделяем например то что хотим оставить



3. отрезаем чего не нужно



4. сохраняемся (Экспортировать...)

5. по пути заполним нужные поля (если надо конечно) и жмём Ok



6. экспортируем в нужном нам формате


пузырёк - соритровка по убыванию одномерного массива

Упорядочить элементы одномерного массива по убыванию. На Pascal

Итак отсортировать по убыванию (так же и по возрастанию) можно с помощью метода пузырька

Последовательно просматриваем числа a0 , ..., an-1 находим наименьшее i такое, что ai > ai+1 . Поменять ai и ai+1 местами, возобновить просмотр с элемента ai+1 и т.д. Тем самым наибольшее число передвинется на последнее место. Следующие просмотры начинать опять сначала, уменьшая на единицу количество просматриваемых элементов. Массив будет упорядочен после просмотра, в котором участвовали только первый и второй элементы.

тут рабочий пример

26026811

По информатике задали задачку и дали образец листинга. Так на этот образец сам QBasic ругается... В чем ошибка? Он пишет, что Else без IF...



По информатике задали задачку и дали образец листинга. Так на этот образец сам QBasic ругается... В чем ошибка? Он пишет, что Else без IF...


Input "U=", u
if u<5 then i=0.55*u+3.75
else if u<7 then i=-0.1*u+7
else if u<11 then i=-1.05*u+13.65
else if u<13 then i=-0.4*u+6.2
else i=0.5*u-5.5
End if
Print "I=",i


тут у вас несколько ошибок


  • перенос ELSE на новую строку (может это и не так страшно, но QBasic-у это не нравится

  • End if - это что?..

  • тут исправленный вариант

среда, 3 июня 2009 г.

25971883

Приписать по единице в начало и конец двоичной записи натурального числа.


давно это было... но попытаемся что-нибудь прояснить в памяти...



  1. определимся сначала что есть натуральные числа - это целые, бесзнаковые
  2. где можно хранить такие числа? ну например в регистрах AL, AX, EAX (8 бит, 16 бит, 32 бита соотв.), это значит что натуральное число может храниться в ячейках разного размера и то что число может быть ограничено соотв. диапазоном значений... но для примера возьмём 8-битное число, т.е. то которое влазит в AL - т.е. байт
  3. итак мне лично нравится число 10 - его двоичное педставление 1010b
  4. я так понимаю что на выходе должно получиться 110101b
  5. ту единичку, которая зелёная можно получить путём сдвига всего числа влево и прибавлением единицы... т.е.

    mov al, 1010b
    shl al, 1
    inc al

  6. ну а ту что красная... тут наверное есть несколько способов, но мне кажется самый очевидный - это подсчитать сколько значащих разрядов в числе, а потом на такое же кол-во + 1 сдвинуть вправо единицу, ну и полученный результат проORить с исходным значением...

  7. итак попробуем подсчитать кол-во начащих символов, будем сдвигать наше число (предварительно сохранив его где-нибудь) вправо - после сдвига проверяем флаг Zero - т.е. что число не стало нулём, если не стало увеличиваем счётчик на 1 и снова сдвигаем...

    mov al, 1010b ;инициализируем al нашим числом
    mov ah, al ;сохраним значение al в ah
    mov cx, 0 ;обнуляем счётчик

    ; подсчитываем кол-во значащих разрядов в нашем числе путём сдвига
    m1:
    shr al, 1
    jz m2 ; если флаг ZF выставлен - то значение al = 0, следовательно выходим
    inc cx
    jmp m1

    m2:

    inc cx ; увеличим ещё на один - чтобы единичка стала красной ;-)

    ; теперь двигаем на cx-раз 1 влево
    m3:
    mov al, 1
    shl al, 1
    dec cx
    jnz m3

    ; тут думается что al = 10000b

    ; тут OR-им, т.е. накладывает нашу единичку
    or al, ah

    ; тут подразумеваем что al уже в виде 11010b



исходников которые можно было бы скомпилировать не прилагаю, т.к не знаю какой OS вы пользуетесь и каким ассемблером... да и подзабыл я уже немного :-))
на этом всё.

Re: http://otvet.mail.ru/question/26000099/

помогите пожалуста написать и отладить прогу на паскале....задание внутри...


Для начала немного определений...

Табулирование функции
– это вычисление значений функции, когда параметр этой функции изменяет значение от некоторого начального до некоторого конечного с определенным шагом. В результате табулирования получают таблицу, которую удобно обрабатывать и исследовать с помощью табличного процессора.
Необходимость в табулировании возникает при решении достаточно широкого круга задач. Например, создав таблицу значений функции, можно построить ее график, определить максимальное или минимальное значение функции на отрезке и т.п.

теперь к задаче:

это обычный цикл с заданным шагом, т.к. for у нас c шагом =1, то мы будем использовать while с заданым шагом

var
i: integer;
begin
i:= 10;
while i <= 100 do
begin
...
i:= i + 5;
end;
end.

2) ну а полный вариант решения тут

Re: http://otvet.mail.ru/question/25995402/

помогите выполнить задание в паскале*** внутри выложил



1) ну тут как всегда - сначала выполняем сначала операции в скобочках, под знаком корня и т.д.

2) минимальное значение находим так

if f < a then begin
if f < s then begin
writeln('f = ', f);
end;
end else begin
if a < s then begin
writeln('a = ', a);
end else begin
writeln('s = ', s);
end;
end


3) аналогично этому и максимальное значение

4) форматированный вывод до 3 знаков после запятой осуществляется с помощью
writeln('x = ', X:5:3);

5) ну и решение полностью тут

Re: Как решить данную задачу на javascript?

Даны целочисленные координаты точки на плоскости. Если точка совпадает с началом координат, то вывести 0. Если точка не совпадает с началом координат, но лежит на оси ОХ или ОY, то вывести соответсвтенно 1 или 2.
Если точка не лежит на координатных осях, то вывести 3.



Тут нужно отметить несколько моментов.

1) как получить информацию от пользователя? предлагаю использовать <input>

2) как получить команду на вычисление? используем <button> с обработкой onclick

3) как выводить результаты? изпользуем <span>

4) как получить то что ввел польователь?
есть такая функция как getElementById, соотв. задаем каждому поле свой id и получаем нужный элемент, но тут у нас на выходе текст - поэтому преобразовываем его к числу используя parseInt()

5) ну а дальше - обычные проверки с if else - полное решение смотри тут

Re: Pascal

и тут еще одну надо я ее написал, но не полностью подскажите:

Дана последовательность из 100 целых чисел,определить кол-во чисел в наиболее длинной последовательности.Из подряд идущих чилел.

Порассуждаем.

0) не забываем заполнить массив значениями - прежде чем работать с ним...

например случайными числами от 0 до 100

var
A: array [0..99] of integer
i: integer;
begin
for i:=0 to 99 do A[i] := random(100)

1) как определить идут ли числа последовательно?
если значение текущего элемента массива - 1 равно предыдущему элементу массива - тогда можно считать что числа идут последовательно и увеличить счётчик

if A[i]-1 = A[i-1] then ...

2) иначе надо проанализировать принимал ли наш счётчит большее значение чем полученное - если нет то присвоить ему новое значение - для этого мы определим новую переменную max_counter
var    max_counter: integer;
begin    counter := 1;    max_counter := 1;    ...
   if counter > max_counter then max_counter := counter


4) ну и готовый пример скачиваем тут

Re: помогте написать прогу.Паскаль

вывести на экран все 4-значые числа, где в составе чила имеется 3 одинаковые цифры(1121, 1112,2111,1111) определите их количество.

заранее спасибо! и ещё...это очень срочно....

1) сначала надо перебрать все 4-х значные числа
var
n: integer;

begin
for n:=1000 to 9999 do
begin
{тут что-то делать с n-тым числом}
end;
end.
2) как-то надо определить что число содержит одинаковые цифры
ну тут сначала надо из числа извлечь его составляющие
для четырёх значного числа нужно поделить его на 10 три раза, т.е.
например для числа 2346 нужно сделать такое:
2346 \ 10 = 234 и остаток - 6 - первая цифра
234 \ 10 = 23 и остаток 4 - вторая цифра
23 \ 10 = 2 и остаток 3 - третья цифра
2 - и есть наша четвёртая цифра
3) как-то нужно подсчитать сколько у нас каждой цифры
для этого используем счётчик для каждой цифры - счётчики будут храниться в массиве
var
counters: array [0..9] of integer;
i: integer;
begin
{перед использованием обнулим их}
for i:=0 to 9 do conters[i] := 0;
...
цифры полученые в результате предыдущих вычислений будут являться индексами в этом масиве
т.е. counters[2], counters[3], counters[4], counters[6]
и при появлении каждой цифры мы увеличиваем соотв. счётчик - так counter[2] = counter[2] + 1;
3) теперь у нас есть кол-ва каждой цифры в данном числе, теперь выясним - есть ли значения хоть одного счётчика более или равное 3-м - тогда выводим число на экран
for i:=0 to 9 do
begin
if counters[i] >2 then writeln(...);
end;
4) ну и рабочую программу можно скачать по ссылке