• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Задачи по Pascal

  • Автор темы Автор темы awde
  • Дата начала Дата начала

awde

Ученик
Регистрация
29 Май 2011
Сообщения
8
Реакции
0
Баллы
0
Задачи по Pascal

1)Даны результаты переписи населения, которые хранятся в памяти ЭВМ. Напечатать фамилии,имена и подсчитать общее число жителей, родившихся в 1990г.
2)Дана целая квадратная матрица n-го порядка. Определить, является ли она магическим квадратом, т.е такой, в которой суммы всех элементов во всех строках и столбцах одинаковы.
 
1) в каком формате и как именно хранятся данные в памяти ЭВМ?
2) а в диагоналях?
 
1 задачу я сам разобрал. А вот со 2 там только строки и столбцы. на счет диагонали ни чего не сказано
 
А что, неужели посчитать и сравнить суммы сначала построчно, потом по столбцам - так уж трудно? Считаете сумму элементов первой строки, потом - второй и сравниваете, если равны - переходите к третьей и т.д. Если не равны - выходите из цикла и выдаете сообщение о том, что квадрат не магический
 
буду пробовать
 
Вот еще задачи:
1)Дана строка. Словом в ней назовем последовательность подряд идущих латинских букв(больших или маленьких). Найти количество слов, начинающихся с буквы А.
2)Дана строка, состоящая из русских слов, набранных заглавными буквами и разделенная пробелами(одним или несколькими). Найти количество слов, которые содержат ровно 3 буквы А.
3)Дан текстовый файл. Записать во второй файл в алфавитном порядке все слова из исходного файла, имеющие заданную длину N.



в 1 и 2 не получается правильный подсчет. А вот 3 я вообще не понял
 
А вот 3 я вообще не понял
Ну тут как раз помочь легко, поскольку недавно я уже выкладывал решение аналогичной задачи. Единственная разница, что там найденные слова выводились на экран, а Вам надо в другой файл. Надеюсь, что с этим Вы справитесь. А так программа (моя, естественно) полностью отлажена.
http://www.tehnari.ru/f41/t52275/
 
Благодарю
 
1)Дана строка. Словом в ней назовем последовательность подряд идущих латинских букв(больших или маленьких). Найти количество слов, начинающихся с буквы А.
Код:
VAR
 S:String;
 i,N:Byte;

Function B(CB:Char):Boolean;
begin
 B:=((Ord(CB)>64) and (Ord(CB)<91)) or
    ((Ord(CB)>96) and (Ord(CB)<123));
end;

BEGIN
 Writeln('Enter the string:');
 Readln(S);
 If S[1]='A' then N:=1 else N:=0;
 For i:=2 to Length(S) do
  If (B(S[i-1])=false) and (S[i]='A') then Inc(N);
 Writeln('N= ',N);
 Readln;
END.
 
2)Дана строка, состоящая из русских слов, набранных заглавными буквами и разделенная пробелами(одним или несколькими). Найти количество слов, которые содержат ровно 3 буквы А.
Код:
VAR
 S:String;
 i,j,N,NA,i1,i2:Byte;
 W:Array[1..100] of String;
 C:Array[1..100] of Byte;

BEGIN
 Writeln('Enter the string:');
 Readln(S);
 i:=0;
 N:=0;
 Repeat
  Repeat
   Inc(i);
  Until S[i]<>' ';
  i1:=i;
  While (S[i]<>' ') and (i<Length(S)) do
   Inc(i);
  If i=Length(S) then i2:=i else i2:=i-1;
  Inc(N);
  W[N]:=Copy(S,i1,i2-i1+1);
 Until i=Length(S);

 For i:=1 to N do C[i]:=0;

 For i:=1 to N do
  For j:=1 to Length(W[i]) do
   If W[i][j]='А' then Inc(C[i]);

 NA:=0;
 For i:=1 to N do
  If C[i]=3 then Inc(NA);

 Writeln('The number of words, containing 3 "А" letters, is ',NA);

 Readln;
END.
 
Спасибо большое
 
Код:
VAR
 S:String;
 i,j,N,NA,i1,i2:Byte;
 W:Array[1..100] of String;
 C:Array[1..100] of Byte;

BEGIN
 Writeln('Enter the string:');
 Readln(S);
 i:=0;
 N:=0;
 Repeat
  Repeat
   Inc(i);
  Until S[i]<>' ';
  i1:=i;
  While (S[i]<>' ') and (i<Length(S)) do
   Inc(i);
  If i=Length(S) then i2:=i else i2:=i-1;
  Inc(N);
  W[N]:=Copy(S,i1,i2-i1+1);
 Until i=Length(S);

 For i:=1 to N do C[i]:=0;

 For i:=1 to N do
  For j:=1 to Length(W[i]) do
   If W[i][j]='А' then Inc(C[i]);

 NA:=0;
 For i:=1 to N do
  If C[i]=3 then Inc(NA);

 Writeln('The number of words, containing 3 "А" letters, is ',NA);

 Readln;
END.

не правильно считает. ТО есть вообще не считает. Пытался сам разобраться ничего не вышло
 
не правильно считает. ТО есть вообще не считает. Пытался сам разобраться ничего не вышло
Уважаемый Awde, видите ли какое дело - я позволяю себе выложить программу ТОЛЬКО после тщательной отладки и тестирования. На всякий случай сейчас еще раз скопировал прямо с форума и запустил как есть. Результат - внизу. А потому попрошу максимально подробно описать: что не так, на что ругается, какая команда не проходит?
 

Вложения

  • Three_A.webp
    Three_A.webp
    7.3 KB · Просмотры: 52
Несколько соображений.
1. Некоторые версии Паскаля требуют, чтобы переменная цикла (i) была ТОЛЬКО в формате Integer. Поэтому попробуйте во второй строке раздела описания переменных (VAR) заменить Byte; на Integer;
2. Если не поможет - попробуйте такой тест: замените в строках
If W[j]='А' then Inc(C);
и
Writeln('The number of words, containing 3 "А" letters, is ',NA);
"А" кириллическую на "A" латинскую и пробный текст вводите также латиницей - тем самым мы избавимся от проблем с этими долбанными кодировками кириллицы.
А уж если и это не поможет - ну тогда не знаю. Во всяком случае, чем больше информации Вы сообщите, тем быстрее мы найдем решение проблемы.
 
спасибо все заработало
 
Назад
Сверху