Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

Задачи по Паскалю   Найти похожие ветки 

 
Bond   (2004-05-08 10:28) [0]

Люди помогите пожалуйста решить задачи по Паскалю:

1. Описать функцию count(s), подсчитывающую общее количество знаков  "+" ,  "-"  и "*" , входящих в строку S.
2. Описать функцию, определяющую во веденной строке символ с минимальным кодом.
3. Ввести массив целых чисел, вывести числа в следующем порядке: сначала отрицательные, потом положительные.
4. Ввести символ, если он  находится в интервале от "0" до "9" , то вывести его код, иначе вывести 5 предыдущих символов.
5. Составить программу вычисления произведения минимальных элементов строк матрицы A(M,N).
6. Составить программу, вставляющую после буквы "К" слог "КВА" , если после неё стоит точка или запятая.
7. Соствить программу для вычисления суммы элементов в каждом столбце матрицы A(M,N).


 
begin...end ©   (2004-05-08 10:47) [1]

Так. Коммерческую конференцию ещё не открыли?


 
KilkennyCat ©   (2004-05-08 11:14) [2]


> begin...end ©   (08.05.04 10:47) [1]

вроде еще нет :)

Но можно и бесплатно ответить:

Описание функции Count(s).

Данная функция предназначена для подсчета общего количества знаков "+", "-" и "*", входящих в заданную строку. В случае отсутствия этих символов возвращает ноль.

И т.д.

Уважаемый Bond! Когда пишут "помогите..." то вероятно, имеется ввиду совместная работа. А Вы вроде как просто просите решить за Вас все. Приведите Ваш код, или хотя бы соображения, как Вы собираетесь решать эти задачи. В этом случае я с удовольствием помогу Вам.


 
Real ©   (2004-05-08 11:45) [3]

если с такими задачами не научитесь справлятся, советую вообще все бросить. А то через пару лет - будете здесть просить чтобы вам безвоздмездно курсовые писали?


 
Bond   (2004-05-08 13:02) [4]


> Уважаемый Bond! Когда пишут "помогите..." то вероятно, имеется
> ввиду совместная работа. А Вы вроде как просто просите решить
> за Вас все. Приведите Ваш код, или хотя бы соображения,
> как Вы собираетесь решать эти задачи. В этом случае я с
> удовольствием помогу Вам.

Ну хоршо я вот тут подумал над 3-ей задачей...но что все равно не получается:

program chisla;
var a:array [1..5] of integer; i,otric,pol: integer;
begin
for i:=1 to 5 do begin
writeln("Zadaite"," ",i," "," chislo -");
readln(a[i]);
end;
writeln("Byl zadan massiv:");
for i:=1 to 5 do write(a[i]," ");
writeln;
otric:=0;
if a[i]<0 then for i:=1 to 5 do otric:=a[i];
writeln("Otricatelnye chisla: ",otric);
pol:=0;
if a[i]>0 then for i:=1 to 5 do pol:=a[i];
writeln("Polojitelnye chisla: ",pol);
readln;
end.


 
Bond   (2004-05-08 13:03) [5]


> Описание функции Count(s).
>
> Данная функция предназначена для подсчета общего количества
> знаков "+", "-" и "*", входящих в заданную строку. В случае
> отсутствия этих символов возвращает ноль.

А вы не могли бы привести пример?


 
KilkennyCat ©   (2004-05-08 13:15) [6]

program chisla;
var a : array [1..5] of integer;
   i, otric, pol : integer;
begin
 for i := 1 to 5 do begin
   writeln("Zadaite"," ",i," "," chislo -");
   readln(a[i]);
 end;
 writeln("Byl zadan massiv:");
 for i:=1 to 5 do write(a[i]," ");
 writeln;


а вот здесь цикл неверен:

 otric:=0;
 if a[i]<0 then for i:=1 to 5 do otric:=a[i];
 writeln("Otricatelnye chisla: ",otric);
 pol:=0;
 if a[i]>0 then for i:=1 to 5 do pol:=a[i];
 writeln("Polojitelnye chisla: ",pol);
 readln;
end.


надо проверку делать В ЦИКЛЕ, а у Вас перед циклом... правильно:

 otric:=0;
 write("Otricatelnye chisla:");
 for i := 1 to 5 do begin
   if a[i] < 0 then begin
     otric:=a[i];
     write(otric, " ");
   end;
 end;


соответсвенно и с положительными. И еще: поскольку элемент массива также может выводится на печать, как и переменная, то от pol и otric можно избавиться:


 write("Otricatelnye chisla:");
 for i := 1 to 5 do if a[i] < 0 then write(a[i], " ");


 
Андрей Сенченко ©   (2004-05-08 13:15) [7]

Bond   (08.05.04 13:03) [5]

Для написания функции Count(s) Вам понадобятся :
1. 2 переменных типа String
2. Функция Pos()
3. Процедура Copy() ити Delete()

Вариант, который Вам могут предложить Мастера ( замотатетесь правда потом защищать свое домашнее задание ) - воспользоваться функцией StringReplace и переменной типа TStringList или просто методом TStringList.DelimitedText.
Букварь в зубы и вперед.


 
OlegGashev ©   (2004-05-08 13:17) [8]

program chisla;

{$APPTYPE CONSOLE}

const ARRAY_SIZE=5;
var
       a:array [1..ARRAY_SIZE] of integer;
       i:integer;

begin
       // &#215;&#232;&#242;&#224;&#229;&#236; &#236;&#224;&#241;&#241;&#232;&#226;
       for i:=1 to ARRAY_SIZE do
       begin
               write("Zadaite"," ",i," "," chislo:");
               readln(a[i]);
       end;

       //&#194;&#251;&#226;&#238;&#228;&#232;&#236; &#236;&#224;&#241;&#241;&#232;&#226;
       writeln("Byl zadan massiv:");
       for i:=1 to ARRAY_SIZE do
               write(a[i]," ");
       writeln;

       // &#194;&#251;&#226;&#238;&#228;&#232;&#236; &#238;&#242;&#240;&#232;&#246;&#224;&#242;&#229;&#235;&#252;&#237;&#251;&#229; &#247;&#232;&#241;&#235;&#224;
       writeln("Otricatelnye chisla:");
       for i:=1 to ARRAY_SIZE do
               if a[i]<0 then
                       write(a[i]," ");
       writeln;

       // &#194;&#251;&#226;&#238;&#228;&#232;&#236; &#239;&#238;&#235;&#238;&#230;&#232;&#242;&#229;&#235;&#252;&#237;&#251;&#229; &#247;&#232;&#241;&#235;&#224;
       writeln("Polojitelnye chisla:");
        for i:=1 to ARRAY_SIZE do
               if a[i]>0 then
                       write(a[i]," ");
       readln;
end.


 
Gero ©   (2004-05-08 13:18) [9]

Блин, вобще думать не хотят.


 
KilkennyCat ©   (2004-05-08 13:21) [10]


> Андрей Сенченко ©   (08.05.04 13:15) [7]
> Bond   (08.05.04 13:03) [5]
>
> Для написания функции Count(s) Вам понадобятся :
> 1. 2 переменных типа String
> 2. Функция Pos()
> 3. Процедура Copy() ити Delete()


а зачем так усложнять-то?

For i := 1 to Length(string) do if string[i] then...


 
Anatoly Podgoretsky ©   (2004-05-08 13:26) [11]

А может стоить просто купить диплом, пользы больше.


 
Андрей Сенченко ©   (2004-05-08 13:27) [12]

А вы не могли бы привести пример?

Шаблон примерно такой

function GetSignCount(s1 : string) : integer;
// предполагается что функция получает на входе начальную
// строку и возвращает результат в виде целого числа.
var
 s2 : string; // понадобится потом - корёжить исходную строку.
begin
 GetSignCount := 0; // Предустанавливаем результат функции
 If Length (s1) < 1 Then EXIT // Проверяем - есть ли во входной
                              // строке хоть что-то и выходим
                              // если нет. Чтобы не делать
                              // лишней работы.
 If  ( Pos("+",s1) ) = 0      // Проверяем наличие искомых
 And ( Pos("*",s1) ) = 0      // Символов в строке.
 And ( Pos("-",st) ) = 0      
 Then EXIT;                   // Если не нашли - выходим

 ...
end;


Дальше сами уж разбрайтесь


 
Андрей Сенченко ©   (2004-05-08 13:28) [13]

KilkennyCat ©   (08.05.04 13:21) [10]

а зачем так усложнять-то?

Чтобы хоть чему то научился


 
nikkie ©   (2004-05-08 14:26) [14]

>Шаблон примерно такой
>Чтобы хоть чему то научился
не знаю, чему из такого можно научиться...
разве что тому, как не надо делать.
зато плюс - препод будет уверен, что сделал сам.


 
Bond   (2004-05-08 15:30) [15]

Может кто-нибудь подскажет как делать 6-ую задачу?


 
OlegGashev ©   (2004-05-08 15:31) [16]

Андрей Сенченко ©   (08.05.04 13:27) [12]

А зачем 3 условия делать?

Достаточно a:array [1..ARRAY_SIZE] of char=("+","-","*");
и пробижаться по этому циклу с strscan.


 
KilkennyCat ©   (2004-05-08 16:09) [17]


> Bond   (08.05.04 15:30) [15]
> Может кто-нибудь подскажет как делать 6-ую задачу?


Гм... вообще-то, после выполнения первых пяти, шестая не вызовет проблем, абсолютно....


 
Андрей Сенченко ©   (2004-05-08 16:25) [18]

OlegGashev ©   (08.05.04 15:31) [16]

Можно и через Set of. Можно и без array вообще, а просто дать string с нужными символами.
Студенческая задача. Зачем плодить потенциальные вопросы ?

nikkie ©   (08.05.04 14:26) [14]

зато плюс - препод будет уверен, что сделал сам.

На этот плюс и нужно ориентироваться. Мы добиваемся того чтобы человек смог сдать или научиться программировать ?
Для себя и я бы делал совсем по-другому.


 
OlegGashev ©   (2004-05-08 17:05) [19]

Зачем плодить потенциальные вопросы ?

Чобы автор вопроса видел всю картину задания и знал механизм её решения. Давай абстрагирую несколько задач для общего случая.

1. Описать функцию count(s), подсчитывающую общее количество целых чисел из массива a , входящих в массив b.

3. Ввести массив целых чисел. Отсортировать его по знаку, без единого прохода по массиву.

6. Составить программу, вставляющую после элемента a в массиве, значения c,d,e , если после него стоит 18 и 73.


Механизм решения абсолютно тот же.


 
begin...end ©   (2004-05-08 17:06) [20]


> [15] Bond   (08.05.04 15:30)
> Может кто-нибудь подскажет как делать 6-ую задачу?


program N6;

var
 S: String;
 I: Integer;

begin
 Write("Введите строку: ");
 ReadLn(S);
 for I := 1 to Length(S) - 1 do
   if (S[I] = "К") and ((S[I + 1] = ".") or (S[I + 1] = ",")) then
     Insert("КВА", S, I + 1);
 Write("Результат: ", S);
 ReadLn;
end.

Но есть одно "но": если "К." или "К," находится в самом конце строки, то Insert не сработает. Так что тебе нужно немного всё это доработать.


 
Андрей Сенченко ©   (2004-05-08 17:27) [21]

OlegGashev ©   (08.05.04 17:05) [19]

По 6-му не совсем понял ... абстрагированно задача выглядит на мой взгляд так :

6. Составить программу, вставляющую после элемента a в массиве, значениe b, если после элемента a стоит элемент с.

Общее опять же решение задачи 1 я бы сделал таким :


function count(str,substr : string) : integer;
var
 i,j : integer;
begin
 count := 0;
 for i := 0 to length(substr) do
   for j := 0 to length(str) do
     if str[j] := substr[i] then inc(count);
end;


P.S.
С Днем Рождения кстати ...


 
Romkin ©   (2004-05-08 17:43) [22]

Мдя. Тихий ужас. Вопрос: задачки на Delphi должны быть решены, или на Паскале? И на какой версии? Ведь способ будет отличаться иногда, в VCL гораздо больше функций, хороших и разных ;)


 
Андрей Сенченко ©   (2004-05-08 17:49) [23]

Subj - Задачи по Паскалю

вроде как от этого танцуем


 
OlegGashev ©   (2004-05-08 17:57) [24]

Андрей Сенченко ©   (08.05.04 17:27) [21]

Первая задача по другому в принципе и не решается.


 
Romkin ©   (2004-05-08 18:17) [25]

OlegGashev ©   (08.05.04 17:57) [24] Если бы :))) Я могу предложить пяток совершенно других решений. Да и проведи опыт, дай эту задачу пяти разным начинающим (!) программистам, и пусть они честно ее решат. Уверяю - будешь удивлен.
У меня есть приятель, так он когда-то тоже программирование учил, в институте. ТАк у него программа решения линейных уравнений методом Гаусса на фортране состояла где-то из пяти процедур и занимала, кажется, ровно 273 строки (Не считая ввода-вывода матрицы!)


 
KilkennyCat ©   (2004-05-08 18:28) [26]


> OlegGashev ©   (08.05.04 17:57) [24]
> Андрей Сенченко ©   (08.05.04 17:27) [21]
>
> Первая задача по другому в принципе и не решается.


вот вам способ...

напоминаю 1. Описать функцию count(s), подсчитывающую общее количество знаков  "+" ,  "-"  и "*" , входящих в строку S.

function count(s) : integer;
begin
 result := 0;
 while length(s) > 0 do begin
   if (s[1] = "+") or (s[1] = "-") or (s[1] = "*") then inc(result);
   s := copy(s,2, length(s) -1);
 end;
end;

ни одной дополнительной переменной, всего один цикл, хотя строку убил :)


 
OlegGashev ©   (2004-05-08 18:31) [27]

KilkennyCat ©   (08.05.04 18:28) [26]

Я говорю для общего случая, а не для "+" ,  "-"  и "*".


 
KilkennyCat ©   (2004-05-08 18:42) [28]

OlegGashev ©   (08.05.04 18:31) [27]

я понял, но общее решение - это инициатива, а она - наказуема :)
для общего решения мне потребуется одна переменная, причем, любого типа, без разницы.


 
Romkin ©   (2004-05-08 18:47) [29]

KilkennyCat ©   (08.05.04 18:42) [28]

function countPlus(s: string) : integer;
var
 i: integer;
begin
 countPlus := 0;
 for i := 1 to Length(S) do
   if s[1] in ["+", "-", "*"] then
     inc(countPlus);
end;

Для общего решения - объяви переменную-множество, туда и пхать :)
PS. в TP6 Result нет...


 
Anatoly Podgoretsky ©   (2004-05-08 18:47) [30]

KilkennyCat ©   (08.05.04 18:28) [26]
В Паскале есть множества!


 
KilkennyCat ©   (2004-05-08 18:56) [31]

хе... ну забыл... LMD мне два раза :)


 
nikkie ©   (2004-05-08 19:01) [32]

>ровно 273 строки
ровнее не придумаешь :)))


 
Bond   (2004-05-08 19:24) [33]

Всем большое спасибо...


 
Bond   (2004-05-08 20:09) [34]

Тут правда один вопросик возник: Как зная элемент массива определить его индекс (a[1], a[2] и т.д)?


 
begin...end ©   (2004-05-08 20:25) [35]


> [34] Bond   (08.05.04 20:09)
> Тут правда один вопросик возник: Как зная элемент массива
> определить его индекс (a[1], a[2] и т.д)?

Путём сравнения образца с элементами массива в цикле.

P. S. Ну ты даёшь. Неужели решения, которые уже приведены, не натолкнули тебя на мысль?


 
Palladin ©   (2004-05-08 21:39) [36]


> begin...end ©   (08.05.04 20:25) [35]

Про какие мысли ты ведешь речь? Ему решения нужны, а не мысли.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.049 c
11-1073629236
azsd
2004-01-09 09:20
2004.05.30
bugs report: KOLPNG


11-1073068424
Dentall
2004-01-02 21:33
2004.05.30
Проблема потоков в KOL (Stream2Stream)


3-1083498123
Strori
2004-05-02 15:42
2004.05.30
Вывод каждой ячейки БД в соответствующие компоненты на форме


4-1082444024
Iraizor
2004-04-20 10:53
2004.05.30
Активная форма и мигание =)


3-1083828056
HPR
2004-05-06 11:20
2004.05.30
Чтение текста из DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский