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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2007, 22:17   #1
Mastak
 
Регистрация: 30.11.2007
Сообщений: 7
По умолчанию "Записи с вариантами"

Помогите, пожалуйстка, с написанием программ.
1) Распечатать список студентов, упорядоченный по алфавиту (нужно ввести 5 студентов и чтобы программа отсортировывала их по алфавиту).
2) Поджсчитать колличество гласных букв в тексте.
Mastak вне форума Ответить с цитированием
Старый 01.12.2007, 03:36   #2
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

2)

Код:
uses crt;
var
  Glas_bukv:string[5];
  Count_Glas_Bukv:integer;
  i:integer;
  k:integer;
  NashText:string;
begin
 read(nashtext);
 Glas_bukv:='аоуыиэ';
 for i:=0 to Length(NashText)-1 do
 for k:=0 to 5 do
 if NashText[i]=Glas_Bukv[k] then Count_Glas_Bukv:=Count_Glas_Bukv+1; 
 writeln('Kolichestvo glasnyh bukv v tekste: ',Count_Glas_Bukv);
 readkey;
end.
1) Сортировки.rar

Последний раз редактировалось Viteef; 01.12.2007 в 07:44.
Viteef вне форума Ответить с цитированием
Старый 01.12.2007, 19:03   #3
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Тут вложен примерный код и файл содержащий фамилии,имена и очества студентов в следующем формате
1 строка. Фамилия
2 строка. Имя
3 строка. Очество
Алгоритм не только упорядочивает по алфовиту, но и исправляет если имя собственное написано с маленькой буквы!
1111.rar
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 01.12.2007, 21:36   #4
Mastak
 
Регистрация: 30.11.2007
Сообщений: 7
По умолчанию

Tayfun
что-то она не работает
Mastak вне форума Ответить с цитированием
Старый 01.12.2007, 22:39   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Номальная программа, работает.
puporev вне форума Ответить с цитированием
Старый 01.12.2007, 23:22   #6
Mastak
 
Регистрация: 30.11.2007
Сообщений: 7
По умолчанию

Да, спасибо, а можно переделать, чтобы эти данные вводить нужно было
Mastak вне форума Ответить с цитированием
Старый 02.12.2007, 18:57   #7
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Непроверял, но должно работать!
Код:
program Yurkin1210;
uses crt;
type mass=array[1..20,1..3] of string;
var
s:mass;
pp:array[1..18] of integer;
sp,b2,ss,ss2,b:string;
p,i2,j2,j,r,k,t,i,c:integer;
f:text;
bb:boolean;
begin
clrscr;
ss:='abcdefghijklmnopqrstuvwxyz';
ss2:='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
writeln('VVEDITE KOLICHESTVO LUDEY');
readln(t);
for i:=1 to t do begin
writeln(i,')FAMILIYA');
readln(s[i,1]);
writeln('IMYA');
readln(s[i,2]);
writeln('OTCHESTVO');
readln(s[i,3]);
end;
for r:=1 to 3 do begin
for i:=1 to t do begin
b:=copy(s[i,r],1,1);
bb:=false;
for j:=1 to 26 do begin
b2:=copy(ss,j,1);
if b=b2 then begin
s[i,r]:=copy(s[i,r],2,length(s[i,r])-1); s[i,r]:=copy(ss2,j,1)+s[i,r];
end;

end;
end;
end;

for i:=1 to t do begin
b:=copy(s[i,1],1,1);
for j:=1 to 26 do begin
b2:=copy(ss2,j,1);
if b=b2 then pp[i]:=j;
end;
end;
for i:=1 to t-1 do
for j:=i+1 to t do
if pp[i]>=pp[j] then
for r:=1 to 3 do begin
k:=pp[i]; pp[i]:=pp[j]; pp[j]:=k;
sp:=s[i,r];s[i,r]:=s[j,r];s[j,r]:=sp;
end;

for i:=1 to t do begin
for r:=1 to 3 do write(s[i,r],' ');
writeln;
end;

readkey;
end.
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 02.12.2007, 20:04   #8
Mastak
 
Регистрация: 30.11.2007
Сообщений: 7
По умолчанию

Огромное спасибо
Mastak вне форума Ответить с цитированием
Старый 03.12.2007, 02:29   #9
Udaf_Alex
 
Регистрация: 19.11.2007
Сообщений: 8
Восклицание

Цитата:
Glas_bukv:='аоуыиэ';
for i:=0 to Length(NashText)-1 do
for k:=0 to 5 do
Первое, гласных букв не 5, а 10 (а,е,ё,и,о,у,ы,э,ю,я). Кроме того, надо учитывать и прописные, и строчные (А, а, Е, е и т.д.), т.е. всего 20 штуков. Ну, если без "Ё", то 18. Т.о. для каждого символа исходного текста надо "прокурутить" внутренний цикл 18 раз, по-моему, не очень С множеством гораздо удобнее

Еще - нулевой символ строки - это не символ, как таковой, а текущая длина строки, представленная в символьном виде, поэтому проверять его не надо, а вот послений символ NachText[Length(NashText)] как раз игнорировать не надо (т.е. цикл надо не от 0 до Length(NashText)-1, а от 1 до Length(NashText)).

Код:
var
  bukvy: set of Char;
  Count_Glas_Bukv:integer;
  i:integer;
  k:integer;
  NashText:string;
begin
 read(nashtext);
 bukvy:=['А','а','Е','е','И','и','О','о','У','у','Ы','ы','Э','э','Ю','ю','Я','я'];
 for i:=1 to Length(NashText) do
    if NashText[i] IN bukvy then inc(Count_Glas_Bukv); 
 writeln('Kolichestvo glasnyh bukv v tekste: ',Count_Glas_Bukv);
 readkey;
end.
Udaf_Alex вне форума Ответить с цитированием
Старый 03.12.2007, 02:47   #10
Udaf_Alex
 
Регистрация: 19.11.2007
Сообщений: 8
По умолчанию

Цитата:
type mass=array[1..20,1..3] of string;
var s:mass;
...
for r:=1 to 3 do begin
k:=pp[i]; pp[i]:=pp[j]; pp[j]:=k;
sp:=s[i,r];s[i,r]:=s[j,r];s[j,r]:=sp;
end;
Если описать s не как двумерный массив, а как массив записей (что, скорее всего, и требовалось в задании - название темы-то "Записи" ), то при перестановке не придется делать вложенный цикл (for r:=1 to 3 do) .

Код:
type tName = record
                     first_name, {имя}
                     last_name, {фамилия}
                     part_name: string; {отчество}
                  end;
var s: array [1..20] of tName;
     sp: tName;
...
{если в процессе сортировки потребовалась перестановка i-го и j-го}
sp:=s[i], s[i]:=s[j]; s[j]:=sp;
Udaf_Alex вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49