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

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

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

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

Задачи на строки

rodger_rulez

Ученик
Регистрация
1 Июн 2011
Сообщения
7
Реакции
0
Баллы
0
Задачи на строки

Привет всем. Ребята, помогите написать две программы.. Вот условия:
задача n7: Дана непустая строка. Вывести коды ее первого и последнего символа.
Задача n39: Дана строка, содержащая по крайней мере один символ пробела. Вывести подстроку, расположенную между первым и вторым пробелом исходной строки. Если строка содержит только один пробел, то вывести пустую строку.
 
Ну вот - и еще один член общества ТЯП - "Тайна Языка Программирования". Что-то в последние дни там изрядное пополнение...
 
ой, дико извиняюсь за это...
Программки на Паскале нужно.. Прошу еще раз прощения)
 
ой, дико извиняюсь за это...
Программки на Паскале нужно.. Прошу еще раз прощения)
Тогда - без проблем:
Дана непустая строка. Вывести коды ее первого и последнего символа.
Код:
VAR
 S:String;
BEGIN
 Writeln('Enter the string:');
 Readln(S);
 Writeln(Ord(S[1]),'   ',Ord(S[Length(S)]));
 Readln
END.
Дана строка, содержащая по крайней мере один символ пробела. Вывести подстроку, расположенную между первым и вторым пробелом исходной строки. Если строка содержит только один пробел, то вывести пустую строку.
Код:
VAR
 S,S1:String;
 i,i1,i2:Byte;
BEGIN
 Writeln('Enter the string:');
 Readln(S);
 i1:=0;
 i2:=0;
 For i:=1 to Length(S) do
  begin
   If (i1=0) and (S[i]=' ') then i1:=i;
   If (i1>0) and (i>i1) and (i2=0) and (S[i]=' ') then i2:=i;
  end;
 If i2=0 then S1:='' else S1:=Copy(S,i1+1, i2-i1-1);
 Writeln(S1);
 Readln
END.
 
Vladimir_S, большое спасибо!!
Vladimir_S, а можно попросить у вас сделать еще несколько задачек? Просто завал у меня с ними... Вешаюсь, препод принципиальный и толком ничего не объясняет... =(
 
Vladimir_S, большое спасибо!!
Vladimir_S, а можно попросить у вас сделать еще несколько задачек? Просто завал у меня с ними... Вешаюсь, препод принципиальный и толком ничего не объясняет... =(
Попросить можно. Но заранее пообещать не могу. Зависит от самих задач. Сразу предупреждаю:
1. Ясельными упражнениями типа "Дан массив. Найти наибольший (наименьший) элемент" не занимаюсь из принципа.
2. В динамических структурах (стеки, списки, бинарные деревья и т.п.) - не силен.
3. Базами данных на основе массивов записей тоже заниматься не буду - просто за последние дни их прет такая лавина, что надоело.
4. Возможно, просто не компетентен. Например, здесь: http://www.tehnari.ru/f41/t52554/#post530439 помочь не смогу. Ну не знаю я этих методов сортировки, а разбираться - с какой стати?
Если не напужал - выкладывайте, посмотрим :D.
 
задача 22: дана строка изображающая целое положительное число. Вывести сумму цифр этого числа.
Задача 38: даны строки s, s1, s2. Заменить в строке s все вхождения строки s1 на строку s2.
 
Легко:
задача 22: дана строка изображающая целое положительное число. Вывести сумму цифр этого числа.
Код:
VAR
 S:String;
 i,n:Byte;
 Sum,Code:Word;
BEGIN
 Writeln('Enter the string:');
 Readln(S);
 Sum:=0;
 For i:=1 to Length(S) do
  begin
   Val(S[i],n,Code);
   Inc(Sum,n);
  end;
 Writeln('Sum= ',Sum);
 Readln
END.
Задача 38: даны строки s, s1, s2. Заменить в строке s все вхождения строки s1 на строку s2.
Код:
VAR
 S,S1,S2:String;
 p:Byte;
BEGIN
 Writeln('Enter the string S:');
 Readln(S);
 Writeln('Enter the string S1:');
 Readln(S1);
 Writeln('Enter the string S2:');
 Readln(S2);
 Repeat
  p:=Pos(S1,S);
  If p>0 then
   begin
    Delete(S,p,Length(S1));
    Insert(S2,S,p);
   end;
 Until p=0;
 Writeln(S);
 Readln
END.
 
Всем привет!!!! можно мне 22 задачку расписать объяснение????? ПОЖАЛУЙСТА!!!!:tehnari_ru_102:
 
1) вводим строку
2) заводим цикл для обращения к каждому символу по его номеру
2.1) считываем символ
2.2) преобразовываем символ в число
2.3) сумму увеличиваем на полученное число
3) выводим полученную сумму

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

23. Дана матрица размера M×N. В каждой строке матрицы найти минимальный элемент.
39. Дана целочисленная матрица размера M×N. Найти количество ее столбцов, все элементы которых различны.
54. Дана матрица размера M×N. Поменять местами столбец с номером N и первый из столбцов, содержащих только отрицательные элементы. Если требуемых столбцов нет,
то вывести матрицу без изменений.

можно еще сделать пометки возле каждой строки что она выполняет?...
 
Владимир, ооочень нужно эти задачки решить... знаю, что массивы Вы не любите... но пожалуйста, помогите мне, а то до 2го экзамена не допустят...уже один пропустил((((
Ладно, живите:
Код:
Const
 M=5;
 N=8;
VAR
 A:Array[1..M,1..n] of Integer;
 Min:Array[1..M] of Integer;
 i,j,k,p,X:Integer;
 b:Boolean;
BEGIN
 Randomize;
 For i:=1 to M do
  begin
   Min[i]:=100;
   For j:=1 to N do
    begin
     A[i,j]:=30-Random(100);
     If A[i,j]<Min[i] then Min[i]:=A[i,j];
    end;
  end;
 Writeln('Task N 23:');
 For i:=1 to M do
  begin
   For j:=1 to N do
    Write(A[i,j]:5);
   Writeln('   Min= ',Min[i]:3);
  end;
 Writeln;
 Writeln('Task N 39:');
 p:=0;
 For j:=1 to N do
  begin
   b:=true;
   For i:=1 to M do
    For k:=1 to M do
     If (i<>k) and (A[i,j]=A[k,j]) then b:=false;
   If b then Inc(p);
  end;
 Writeln('The number of columns with only different elements is ',p);
 Writeln;

 Writeln('Task N 54:');
 p:=0;
 For j:=1 to N do
  If p=0 then
   begin
    b:=true;
    For i:=1 to M do
     If (p=0) and (A[i,j]>=0) then b:=false;
    If b then p:=j;
   end;

 If (p>0) and (p<N) then
  For i:=1 to M do
   begin
    X:=A[i,N];
    A[i,N]:=A[i,p];
    A[i,p]:=X;
   end;

 For i:=1 to M do
  begin
   For j:=1 to N do
    Write(A[i,j]:5);
   Writeln;
  end;

 Readln
END.
 
Спасибо!!! только программа не работает!!!!!...можете ее перепроверить???ПОЖАЛУЙСТФ!!!!!!!!Очень нужно!!!!!!
 
Спасибо!!! только программа не работает!!!!!...можете ее перепроверить???ПОЖАЛУЙСТФ!!!!!!!!Очень нужно!!!!!!
Так. Говорил, говорю и еще хоть сто раз повторю - я НЕ выкладываю сюда неотлаженных неоттестированных программ. А потому - пожалуйста, конкретнее. Что именно "не работает"? В чем это выражается? Какие сообщения возникают? Скорее всего - какие-то "задвиги" Вашей версии Паскаля. Давайте информацию - будем разбираться.
 
Спасибо!!! только программа не работает!!!!!...можете ее перепроверить???ПОЖАЛУЙСТФ!!!!!!!!Очень нужно!!!!!!

задача :
Строки
№22
Дана строка, изображающая целое число. Вывести сумму цифр этого числа.

VAR
S:String;
i,n:Byte;
Sum,Code:Word;
BEGIN
Writeln('Enter the string:');
Readln(S);
Sum:=0;
For i:=1 to Length(S) do
begin
Val(S,n,Code);
Inc(Sum,n);
end;
Writeln('Sum= ',Sum);
Readln
END.
 
задача :
Строки
№22
Дана строка, изображающая целое число. Вывести сумму цифр этого числа.

VAR
S:String;
i,n:Byte;
Sum,Code:Word;
BEGIN
Writeln('Enter the string:');
Readln(S);
Sum:=0;
For i:=1 to Length(S) do
begin
Val(S,n,Code);
Inc(Sum,n);
end;
Writeln('Sum= ',Sum);
Readln
END.

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

i,n:Byte;
Sum,Code:Word;

одной строкой

i,n,Sum,Code:Integer;

Возможно, это решит проблемы.
 
Может быть, еще в одном месте сбоит. Если предыдущие поправки не устранили проблем, сделайте так:

1. Первую в разделе VAR строку
S:String;
Замените на
S,S1:String;

2. Строку
Val(S,n,Code);
Замените на две:
S1:=S;
Val(S1,n,Code);
 
For i:=1 to Length (s) do - в этой строчке выдает ошибку(error 97)
 
Эта ошибка говорит, что управляющая переменная несоответствующего типа, попробуйте переменную i определить как Integer
 
Честно сказать - не понимаю! Всё там правильно. А какой у Вас Паскаль? Уже за сегодня второе сообщение (сильно подозреваю, что из приблизительно одного источника) о проблемах со стандартной функцией определения длины строки Length(S). Посмотрите Help Вашего пакета - что там говорится об этой функции?
 
Назад
Сверху