Просмотр полной версии : Программы на Паскале
Прошу помощи в Паскале, т.к. сам шарю плохо, и очень в нем путаюсь)
Программа на двумерный массив:
Определить номера строк двумерного массива, которые равны между собой.
Прогу написал, но вот с выводом одинаковых строк попа...
1 0 0 1 1
0 1 0 1 0
0 1 0 1 0
0 0 0 0 0
0 0 1 1 1
2=3
3=2
выводит два раза, не знаю как убрать, прошу помощи...
program massiv;
const n=5;
var a:array [1..n,1..n] of integer;
i,j,l,k,m:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(2);
write(a[i,j]:4);
end;
writeln;
end;
for i:=1 to n-1 do
begin
for l:=2 to n do
begin
k:=0;
for j:=1 to n do
if a[i,j]=a[l,j] then
begin
k:=k+1;
if k=n then
if i<>l then
writeln(i,'=',l);
end;
end;
end;
writeln;
end.
И прога на строковый массив:
Для введенной строки определить длину содержащейся в ней максимальной серии символов, отличных от букв.
Тут я вобще не знаю что делать...
Прошу очень помощи...
Для введенной строки определить длину содержащейся в ней максимальной серии символов, отличных от букв.
Program qwerty;
uses crt;
var
str:string;
i,cnt,max:integer;
begin
clrscr;
writeln('Vvedite straka'); readln(str);
for i:=1 to length(str)
do begin
if ( str[i] in ['a'..'z']) or (str[i] in ['A'..'Z']) then
begin
if cnt>max then max:=cnt;
cnt:=0;
end
else
inc(cnt);
if cnt>max then max:=cnt;
end;
writeln('max = ',max);
readkey;
end.
...
if (i<>l) and (i<l) then
writeln(i,'=',l);
end;
end;
end;
writeln;
end.
Вот как-то так
if (i<>l) and (i<l) then
if i<l then
xD
if i<l then
xD
Так я сразу в прогу добавил на место условия при выводе
Program qwerty;
uses crt;
var
str:string;
i,cnt,max:integer;
begin
clrscr;
writeln('Vvedite straka'); readln(str);
for i:=1 to length(str)
do begin
if ( str[i] in ['a'..'z']) or (str[i] in ['A'..'Z']) then
begin
if cnt>max then max:=cnt;
cnt:=0;
end
else
inc(cnt);
if cnt>max then max:=cnt;
end;
writeln('max = ',max);
readkey;
end.
Спс, подходит, только поубирал подключение модулей, вроде мы их еще не проходили) и вопросик что такое inc(..) я забыл =)
Вот как-то так
Спасибки, вот этой мелочи и не хватало.
inc(x) тоже самое что и x = x+1
А модуль crt можешь убрать, но тогда ты лишишься прекрасных функций clrscr и readkey. Не беда вобщем то
ну впринцыпе так и понял, но все таки спс что разъяснил)
первый курс еще, мы эти функции еще не проходили, хотя я и понимаю зачем они нужны)
Вообщем нужно решить 3 задачи на завтра, ну или хотя бы сколько сможете, спорная оценка :(
1) Игрок А объявляет 2х значное число от 01-99. Игрок Б меняет местами его цифры и полученное число прибавляет к сумме его цифр. Полученный результат он объявляет игроку А. Игрок А проделаывает с этим числом ту же процедуру, и так они продолжают поступать поочереди, объявляя число. От суммы чисел берется остаток от деления на 100, поэтому объявляются лишь 2х значные числа. Какие числа может объявлять игрок А на начальном шаге, чтобы игрок Б в некоторый момент объявил число 00?
2) Определить, является ли заданная целая квадртаная матрица n-го порядка симметричной (относительно главной диагонали).
3) Дана строка, содержащая текст на русском языке. Составить в алфавитном порядке список всех слов, встречающихся в этом тексте.
DennisBergkamp
22.12.2009, 15:18
Паскаль помню плохо, так что могу только так помочь:
2) Определить, является ли заданная целая квадртаная матрица n-го порядка симметричной (относительно главной диагонали).
sum=n*n;
for i:=1 to n do
begin
for j:=1 to n do
begin
if ( mass[ i ][ j ] == mass[ j ][ i ] ) then
p:=p+1;
end
end
if ( p==sum) then
writeln("yes");
else
writeln("no");
p.s. Правильность не гарантирую!
2 задача
upd 3 задача. пробовал на англ версии и с цифрами - вроде работало. На русских тоже должно.
Протестируй все. Если какие ошибки найдешь, обращайся. Условие 1 задачи не понял
ого, какая тема полезная, топикстартер молодец!:)
F-орумчане, помогите пожалуйста!
Задача 1:
В заданном одномерном массиве поменять местами соседние элементы, стоящие на четных местах, с элементами, стоящими на нечетных.
Задача 2:
Задан двумерный массив Аij из 5ти строк и 4ех столбцов. Составить программу, которая вычисляет значение S=A11+A22+A33+A44
Левитан, а начать менять, например, 1 со 2 или 2 с 3. или как?
я думаю, 1 со 2.
Спасибо огромное!:) выручил
Футболлист, спасибо огромное :) сейчас протестируем)
Левитан, вот 1. Учите Pascal ;)
Egification
22.12.2009, 20:17
О,топикастеру действительно большой респ,у мя как раз в субботу зачёт по инфе.
Футболлист, обалдеть!! Настроение улучшилось (с)
El Numero Uno
28.12.2009, 01:41
Задали задачку: Нужно методом Гауса найти корни 3-х линейных уравнений.
Мысли есть, но нужно чтобы 100% верно было)
Всем заранее спасибо!!!
El Numero Uno, сделай, а мы если что подскажем, подредактируем
El Numero Uno
28.12.2009, 03:23
ну суть в том, что мы заполняем матрицу. затем работаем с двумя первыми уравнениями, потом с третьим.
У меня такой вопрос: нужно создавать более широкую матрицу, для того чтобы помещать промежуточные результаты или нет?
-=IgoREk=-
28.12.2009, 09:28
Ребят, кто шарит в Паскале помогите 4 долга досдать.
Вот задачи:
В заданной матрице A(N,M) найти количество различных по значению элементов в кадом столбце. Затем переставить столбцы по убыванию найденных значений. Результат напечатать.
Дан файл из целых чисел. Поменять порядок компонент на обратный.
Дан файл записей, содержащий сведения о клиентах: фамилия, имя,день рождения (число, месяц, год). Напечатать данные о клиентах, фамилии которых начинаются с заданной буквы.
Дана матрица A(N,M). Построить вектор, состоящий из номеров максимальных элементов столбцов матрицы. Номер макс. элемента вычисляется функцией.
Пожалуйста, кто может помогите хоть с какой-нибудь работой (
El Numero Uno, не надо, вроде, все можно с помощью одной сделать. И еще кол-во переменных тоже 3 равно или без разницы?
El Numero Uno
28.12.2009, 16:25
El Numero Uno, не надо, вроде, все можно с помощью одной сделать. И еще кол-во переменных тоже 3 равно или без разницы?
Без разницы
Вот сделал немного, там правда ответ только если 3 неизвестных, сегодня просто настроения нет, если что завтра еще подумаю над этим.
Mon_Ennemi
05.01.2010, 20:39
Очень нужна помощь в строках)
Есть задание:
Удалить в строке слова, которые встречаются в ней указанное число раз.
При этом такой вариант написания программы не подходит, потому что сравнивает слова поэлементно:
program stroka;
uses crt;
var a:string;
b:array[1..60]of string;
i,k,n,t,m,j:byte;
begin
clrscr;
writeln('vvedite stroku');
readln(a);
writeln('vvedite chislo');
readln(n);
a:=' '+a+' ';
for i:=1 to length(a) do
if a[i]=' 'then inc(k)else b[k]:=b[k]+a[i];
for i:=1 to k do
begin
m:=0;
for j:=1 to k do
if b[i]=b[j] then inc(m);
if m=n then
begin
for t:=length(a)downto 1 do
if copy(a,t,length(b[i])+2)=' '+b[i]+' ' then delete(a,t,length(b[i])+1);
end;
end;
writeln(a);
readln;
end.
Помогите, пожалуйста)
DoubleQuick
25.01.2010, 16:58
помогите решить -) задачи вроде несложные, но у меня просто времени нету, так что кому не влом помогите
1.Найти сумму цифр числа
2.Найти старшую цифру числа
3.Переписать по 1 в начало и в конец записи числа n. например,из числа n=3456 надо получить 134561
4. поменять местами первую и последнюю цифры числа
5. найти кол-во четных цифр натурального числа
6. найти самую большую цифру целого числа
7. найти сумму цифр целого числа,больших 5.
8. сколько раз данная цифра встречается в целом числе?
Egification
08.02.2010, 19:08
Парни,я не "нупке" просто на теме Циклы не был а задачи надо решить
1) Определите и выведите кол-во трёхзначных чисел,которые делятся одновременно
на 3,5,7
2)Найдите и выведите на экран все двузначные числа сумма квадратов цифр которых делится без остатка на 17
З.Ы
Надо до четверга,желательно чтобы помогли)
El Numero Uno
08.02.2010, 19:49
Помогите плиз доделать прогу.
Условие:
Собственно возникла проблема с такой задачей:
На вход программе подаются сведения о сдаче ЕГЭ абитуриентами, которые поступают на разные факультеты в некое высшее учебное заведение. В первой строке сообщается кол-во абитуриентов N, которое не меньше 20, но не превосходит 300, во второй строке указывается кол-во бюджетных мест на факультет (через пробел три числа соответсвующие 1-му, 2-му и третьему фак-у). Каждая из следующих N строк имеет следующтй формат:
<Фамилия> <Факультет> <Баллы>
Пример входной строки:
Иванов 2 57 85 63
Требуется написать программу, которая будет выводить на экран номера факультетов и проходной балл.
Мой вариант:
type bred=record
f:string
sum:real;
end;
Var
Tab1,Tab2:array[1..40] of bred;
t:text;
s:string;
c:char;
z,i,n,sum,k:integer;
Begin
Assign(t,'text.txt');
Reset(t);
Readln(t,n);
For i:=1 to n do begin
s:='';
repeat read(t,c);
s:=s+c;
until c:=' ';
Tab[i].f:=s;
For z:=1 to 3 do begin
Read (t,k);
Sum:=sum+k;
end;
Tab[i].sum:=sum;
readln(t);
{вывод на экран}
end.
Здесь идёт подсчет для 3-х человек (не это главное).
я не знаю как считать, обротать и вывести факультеты и проходной балл. помогите плиз..
SerginhoLD
08.02.2010, 19:52
Egification,
1.
for i:=100 to 999 do
Begin
if ( i mod 3 = 0 ) and ( i mod 5 = 0 ) and ( i mod 7 = 0 ) //если число делится без остатка на данные числа, то вывести это число
then writeln(i);
end;
El Numero Uno, ну номер фак я думаю не трудно вывести, поидеи когда ктото кудато пуступает он же выбирает куда, то просто выводишь число(1,2 или 3) соответствующее факу, который выбрали.
ну а проходной бал хер знает как считать, поидее он вроде както должен зависить от абитуриентов, придумай чтонить, или в деканат сходи спроси по каким критариям люди этот проходной бал выставляют :) p.s. я вот полтора года назад поступал, мне сказали по русскому 40 баллов, по математике как можно выше, 30 лучших зачисляются. Вот поэтому я и говорю, придумай чтонить
Egification,
2.
var i,a,b,c:integer;
begin
for i:=10 to 99 do
begin
a:=i div 10;
b:=i mod 10;
c:=a*a+b*b;
if (c mod 17 = 0) then
write(i,' ');
end;
readln;
end.
Egification
08.02.2010, 20:22
cec,
SerginhoLD,
спасибо)
Помогите плиз доделать прогу.
Условие:
Собственно возникла проблема с такой задачей:
На вход программе подаются сведения о сдаче ЕГЭ абитуриентами, которые поступают на разные факультеты в некое высшее учебное заведение. В первой строке сообщается кол-во абитуриентов N, которое не меньше 20, но не превосходит 300, во второй строке указывается кол-во бюджетных мест на факультет (через пробел три числа соответсвующие 1-му, 2-му и третьему фак-у). Каждая из следующих N строк имеет следующтй формат:
<Фамилия> <Факультет> <Баллы>
Пример входной строки:
Иванов 2 57 85 63
Требуется написать программу, которая будет выводить на экран номера факультетов и проходной балл.
Здесь идёт подсчет для 3-х человек (не это главное).
я не знаю как считать, обротать и вывести факультеты и проходной балл. помогите плиз..
Проходной балл, это балл у n-ого абитуриента, где n - кол-во бюджетных мест на факультет
Вобщем тебе надо от каждого абитуриента взять сумму его баллов, запихнуть это к нужному факультету и отсортировать. После этого взять у каждого факультета тот самый n-ый элемент, он и будет проходным быллом. Это в лоб, типа правильно, но лучше так не делать. Сортировки надо избегать.
Есть ещё вариант создать массив 3на300
где столбцы это факультеты(3), а строки это баллы(максимально можно набрать 300) Считываем факультет, сумму баллов и в массив плюсуем 1
Выглядеть будет так: Mass[fac,sum]:=Mass[fac,sum]+1;
После этого проходим каждый столбец снизу-вверх(от 300 до 1) и от количества бюджетных мест вычитаем элементы столбца, до тех пор пока места не закончатся. Тот элемент где места закончатся, и есть проходной балл(индекс массива по строкам )
Этот вариант уже получше
Egification
09.02.2010, 14:34
Парни,не сочтите за наглость,но можно ещё 2 задачки такого типа!?
1)Определите и выведите на экран кол-во чисел от 50 до 500,которые делятся одновременно 11 и 13
2)НАйдите и выведите на экран все 3значные числа,сумма цифр которых равна данному целому числу N,введенному с клавиатуры.Н не должно быть больше 27
SerginhoLD
09.02.2010, 15:13
1.
Sum:=0
For i:=50 to 500 do
Begin
If ( i mod 13 = 0 ) and ( i mod 11 = 0) then sum:=sum+1;
End;
Writeln(sum);
Написал бы и 2 но яя с мобилы :)
var n,i,sot,des,ed:integer;
begin
repeat
writeln('Введите число N не большее 27');
readln(n);
until n<28;
for i:=100 to 999 do
begin
sot:=i div 100;
des:=i div 10 mod 10;
ed:=i mod 10;
if sot+des+ed=n then write(i,' ');
end;
readln;
end.
Egification
09.02.2010, 20:55
SerginhoLD,
cec,
Опять таки благодарю)
Парни, помогите решить задачу.
Ввести два числа. Уменьшить первое число в 3 раза, второе увеличить на 5. Если сумма полученных чисел меньше 10,5, то вывести их на печать, иначе вывести на печать разность введенных чисел.
Я просто вообще ноль в паскале. Заранее спасибо.
var a,b: integer;
begin
writeln('Введите 2 числа');
readln(a,b);
if a/3+b+5<10,5 then writeln(a,b) else writeln(a-b);
readln;
end.
cec, большое спасибо. Выручил:)
dark_wolf
10.02.2010, 19:54
DmiGo, держи:
var a, b, c, d, s, r: real;
begin
writeln ('введите число а');
readln (a);
writeln ('введите число b');
readln (b);
c:=a/3;
d:=b+5;
s:=c+d;
r:=a-b;
if s<10.5 then writeln (c,' ', d)
else writeln (r);
end.
Опоздал).
Опоздал).
Ничего. Все равно спасибо.
dark_wolf
10.02.2010, 20:06
cec, исправься. Замени в своей программе "b*5" на "b+5".
Egification
11.02.2010, 19:41
первая задачка
Определите и выведите на экран количество четырехзначных чисел,делящихся без остатка одновременно на 5 и 11.
вторая задачка
Найдите и выведите на экран все трехзначные числа,кратные 20,сумма цифр которых равна сумме частного от деления их на 20.
Dr.Gonzo
11.02.2010, 20:18
Egification
i := 1000
while i <= 9995 do
begin
if (i mod 11) == 0 then
writeln(i);
i := i + 5;
end;
вторая похожа (если проходили подпрограммы 0_0 )
function summ(integer n): integer;
begin
Result := 0;
while n <> 0 do
begin
Result := Result + (n mod 10);
n := n div 10;
end;
begin
i := 100
while i < 1000 do
begin
if Summ(i) == Summ(i div 20) then
writeln(i);
i := i + 20;
end;
end;
SerginhoLD
11.02.2010, 21:27
Egification, у тебя все задачки одинаковые, можно было бы давно самому разобраться
Egification
18.02.2010, 19:35
SerginhoLD, всё дело во времени,которго к слову почти нет..
сначала школа,затем репетиция,ннадо кое ка сделать уроки,а затем ещё и секция..
жесть...)
Да кстати решите через Repeat-Until:
1)Напечатать минимальное число больше 200,которое делится без остатка на 17
2)Дано число.Есть ли в нём цифра А?
Egification,
1-я
Program First;
var i:integer;
begin
i:=200;
repeat
inc(i);
until i mod 17 =0;
writeln(i);
end.
2-я
Program Second;
var N,i:longint;
A:char;
S:string;
B:Boolean;
begin
readln(N,A);
str(N,S);
b:=false;
i:=0;
repeat
inc(i);
if S[i]=A then B:=true;
until i>=length(s);
if B then writeln('Yes') else writeln('No');
end.
Буду просто безумно благодарен, если поможете с четырьмя задачками, а то сильно напрягает висящий долг по информатике!
http://s02.radikal.ru/i175/1002/0a/625156ef5411.jpg
http://s11.radikal.ru/i184/1002/b4/2ea4438471f5.jpg
http://s005.radikal.ru/i210/1002/5a/e9b9d5a6f90a.jpg
http://s004.radikal.ru/i205/1002/d4/f7174b14b6ef.jpg
Везде 5 вариант.
Буду просто безумно благодарен, если поможете с четырьмя задачками, а то сильно напрягает висящий долг по информатике!
http://s02.radikal.ru/i175/1002/0a/625156ef5411.jpg
http://s11.radikal.ru/i184/1002/b4/2ea4438471f5.jpg
http://s005.radikal.ru/i210/1002/5a/e9b9d5a6f90a.jpg
http://s004.radikal.ru/i205/1002/d4/f7174b14b6ef.jpg
Везде 5 вариант.
Знатоки паскаля, неужели и вы мне не поможете?
Egification
17.03.2010, 21:32
Что то тема заглохла,помошников стало меньше!
Есть просьба,при чём очень огромная...у меня в пятницу зачёт,нет зачётищще по инфе,теорию я выучил а вот с задачами проблема,их надо придумать и решить:
1)"Нахождение суммы"
2)"Нахождение чисел из промежутка"
3)"Посчитать кол-во цифр числа"
4)"Сумма цифр числа"
5)"сколько раз цифра повторяется в числе"
6)"НОД двух чисел"
7)"НОД трёх чисел"
8)"НОК"
Уважаемые знатоки,от этого зависит оценка за четверть,прошу очень Вашей помощи!
З.Ы НОД-Наибольший общий делитель
НОК-Наименьшее общее кратное!
Добавлено через 18 минут
Просьба огромная...Возьмитесь кто-нибудь
HELP ME!
Парни помогите написать программу.
Дан одномерный массив А. Сформировать новый массив Z, состоящий из элементов массива А, значение которых меньше среднего арифметического всех нечётных элементов массива А. Полученный массив отсортировать по возрастанию.