Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2009, 06:54   #1
art_melnichenko
 
Регистрация: 22.01.2009
Сообщений: 6
Радость Посмотрите пожалуйста всё ли правильно?

ТЕМА: СТРОКОВЫЙ ТИП ДАННЫХ

ЗАДАНИЕ:
Даны натуральное число n и символы S1, …, Sn (строка). Преобразовать строку, заменив запятыми все двоеточия, встречающиеся среди
S1, …, Sn/2, и заменив точками все восклицательные знаки, встречающиеся среди Sn/2+1 …, Sn.

текст программы:
Код:
Program zad_10;
uses crt;
var
     i,k:integer;
     s:string;

Procedure vvod; 
begin
writeln ('Введите строку');
readln(s);
end;

procedure point1;
begin
k:=0;
  for i:=k to length(s) do
 if s[i]=':' then s[i]:=',';
 end;

procedure point2;
begin
k:=0;
   for i:=k to length(s) do
  if s[i]='!' then s[i]:='.';

Writeln(s);
end;

begin
  clrscr;
  Vvod;
  point1;
  point2;
  readln;
end.
Так то всё работает, но вопрос - правильно ли всё написано?
т.е работает маленько не так как требуется. Моя программа меняет все двоеточия и восклицательные знаки во всей строке. А надо чтобы в первой половине строки менялись все двоеточия запятыми, а во второй половине строки все восклицательные знаки точками.

Последний раз редактировалось Stilet; 08.11.2012 в 21:59.
art_melnichenko вне форума Ответить с цитированием
Старый 27.01.2009, 08:44   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Код:
uses crt;
var s:string;
    i,slov:integer;
    schet:boolean;
BEGIN
 ClrScr;
 WriteLn('Vvedite stroky');
 Readln(s);
 for i:=1 to length(s) do
  begin
  if i<=round(length(s)/2)then if s[i]=':'then s[i]:=',';
  if i>round(length(s)/2) then if s[i]='!' then s[i]:='.';
  end;
  writeln(s);
  Readln;
  END.
SERG1980 вне форума Ответить с цитированием
Старый 08.11.2012, 20:29   #3
misha.markov
Новичок
Джуниор
 
Регистрация: 08.11.2012
Сообщений: 3
По умолчанию

А как данная программа будет выгладить на языке си ++?
misha.markov вне форума Ответить с цитированием
Старый 08.11.2012, 21:47   #4
masax
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 248
По умолчанию

Код:
#include <string>
#include <iostream>
#include <cmath>

using namespace std;

int round (double value)
{
   return (int) floor(value + 0.5);
}

void _tmain(int argc, _TCHAR* argv[])
{
	char s[256];
	cout << "Vvedite stroky" << endl;
	cin >> s;
	int mid = round(strlen(s)/2);
	for (int i=0; i < (int)strlen(s); i++)
		if (i > mid)
		{
			if (s[i] == '!')
				s[i] = '.';
		}
		else
			if (s[i] == ':')
				s[i] = ',';
	cout << s << endl;
	system("pause");
}
Контакты
skype, почта: bm@kwax.ru
masax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подскажите пожалуйста что не правильно в скрипте. 6AT9 JavaScript, Ajax 1 25.11.2008 00:21
Посмотрите пожалуйста правильно ли написана программа,если нет укажите ошибку. Викулька Помощь студентам 1 10.12.2007 22:49
плиз форумчане посмотрите что здесь не правильно _Solomon_ Помощь студентам 6 07.06.2007 13:54