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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2010, 18:07   #1
Lodas
Пользователь
 
Регистрация: 20.05.2010
Сообщений: 61
По умолчанию работа со строками

Привет друзья. Столкнулся с такой задачей:
Дана строка и натуральное число n. определить количество пробелов в подстроке, состоящих из первых n сиволов исходной строки, и выяснить имеются ли в этой подстроке в точности два соседствующих сивола <<?>>(если вводимое значение n оказывается больше длинны строки, выдать сообщение об ошибке) . как можно ее реализовать?
Lodas вне форума Ответить с цитированием
Старый 18.12.2010, 19:47   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
Var
  St:String;
  i,n:Byte;
  Flag:Boolean;
  Kol:Byte;
begin
  Readln(St);
  Readln(N);
  Flag:=False;
  Kol:=0;
  Repeat
    Writeln('Oshibka. Povtorite vvod');
    Readln(N);
  Until N <= Length(St);
  For i:=1 to N do
  Begin
    If St[i] = ' ' then Inc(Kol)
    Else
    If (St[i] = '?') and (St[i+1] = '?') then Flag:=True
  End;
  Writeln('Kol probelov = ',Kol);
  If Flag then Writeln('Esty')
           else Writeln('Netu');
  Readln
End.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 18.12.2010, 20:26   #3
Lodas
Пользователь
 
Регистрация: 20.05.2010
Сообщений: 61
По умолчанию

Простите а можно ли перевети этот с этого языка на си? Просто я не знаю этого языка...
Lodas вне форума Ответить с цитированием
Старый 18.12.2010, 21:03   #4
Lodas
Пользователь
 
Регистрация: 20.05.2010
Сообщений: 61
По умолчанию

как перевести это на си? кто нибудь поможет? хотя бы в самых сложных участках
Код:
Repeat
    Writeln('Oshibka. Povtorite vvod');
    Readln(N);
  Until N <= Length(St);
  For i:=1 to N do
  Begin
    If St[i] = ' ' then Inc(Kol)
    Else
    If (St[i] = '?') and (St[i+1] = '?') then Flag:=True
  End;
  Writeln('Kol probelov = ',Kol);
  If Flag then Writeln('Esty')
           else Writeln('Netu');
  Readln
Lodas вне форума Ответить с цитированием
Старый 18.12.2010, 22:27   #5
Lodas
Пользователь
 
Регистрация: 20.05.2010
Сообщений: 61
По умолчанию

что означает вот эта строчка
Код:
  Until N <= Length(St);
есть ли ее аналог в си?
Lodas вне форума Ответить с цитированием
Старый 18.12.2010, 22:49   #6
Lodas
Пользователь
 
Регистрация: 20.05.2010
Сообщений: 61
По умолчанию

Подскажите пожалуста что означает только эта строчка. с остальным кодом я уже разобрался....
Код:
Until N <= Length(St);
всего одна строчка...
Lodas вне форума Ответить с цитированием
Старый 18.12.2010, 22:57   #7
kiborrgg
Delphi / C++
Пользователь
 
Аватар для kiborrgg
 
Регистрация: 29.09.2010
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Lodas Посмотреть сообщение
Подскажите пожалуста что означает только эта строчка. с остальным кодом я уже разобрался....
Код:
Until N <= Length(St);
всего одна строчка...
Это строчка означает что действие будет повторятся, пока число N не будет меньше или равно длинны строки St.
kiborrgg вне форума Ответить с цитированием
Старый 18.12.2010, 22:59   #8
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Код:
do
while (N <= strlen(St))
psycho-coder вне форума Ответить с цитированием
Старый 18.12.2010, 23:16   #9
Lodas
Пользователь
 
Регистрация: 20.05.2010
Сообщений: 61
По умолчанию

Вот я написал код.
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{ char Str;
int i,n, kol, flag;
printf("VVedite stroky");
scanf("%d", Str);
printf("VVedite natur chilo n");
scanf("%d", n);
flag=0;
kol=0;
while (n <= strlen(Str)){
for (i:=1, i<n, i++)
if (Str[i]=' ') {kol++} else
if (Str[i]='?') and (Str[i+1]='?'){flag=1;}   
printf ("Kol probelov=%d", kol);
if (flag=1) {printf ("Yes");} else printf ("No");}   
    
    getch();}
Но вот в этой строке почему то вылетает ошибка
Код:
do while (n <= strlen(Str)){
Почему?
Lodas вне форума Ответить с цитированием
Старый 18.12.2010, 23:21   #10
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Хм... *Нужно будет лучше объяснять*
Код:
repeat
(* твой код *)
until <условие>;
Код:
do
{
// Твой код
} while (<условие>)
psycho-coder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
работа со строками с++ LovingDaisy Общие вопросы C/C++ 0 11.01.2010 01:06
Работа с строками Fellics{новичок} Общие вопросы Delphi 5 28.05.2009 18:03
Работа со строками eR- Помощь студентам 2 23.02.2009 15:11
работа со строками Milker-Monster Помощь студентам 1 02.11.2008 21:32