0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
|
||||||
1 | ||||||
Обработка числовых и символьных массивов26.11.2008, 22:29. Показов 2836. Ответов 16
Метки нет Все метки)
(
помогите, плиз, решить 2 задачки - очень надо( очень срочно. совсем не знаю, что делать((
тема: решение задач с использованием циклических плгоритмов. обработка числовых и символьных массивов 1.упорядочить строки в порядке возрастания сумм их отрицательных четных элементов здесь дохожу до определенного момента, и дальше знаю( только то, что надо отсортировать полученный одномерный массив и потом обратить его обратно в исходный, упорядочнив по принципу одномерного. но совсем не знаю, как это организовать/записать(((
эту задачку совсем не знаю, как решить :'( Добавлено через 2 часа 47 минут 9 секунд помогите, плиз, решить ![]() ![]() ![]() неужели никто не знает, как?(
0
|
|
26.11.2008, 22:29 | |
Ответы с готовыми решениями:
16
обработка символьных массивов
|
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
|
||||||
27.11.2008, 00:57 | 2 | |||||
2.отформатировать текст по "n" символов в строке (вставить равномерно между словами пробелы, чтобы длина строки была равна "n") тут пояснения нужны, от куда берётся текст(из файла)? Выводить нуно на экран или в отдельный фаил?
1
|
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
|
|
27.11.2008, 01:22 [ТС] | 3 |
Arriba, спасибо большое за первую.
по поводу второй - текст надо сохранить в массиве (сам текст ввести с клавиатуры), надо выводить на экран для проверки правильности.
0
|
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
|
|
27.11.2008, 11:35 | 4 |
Скажи пожалуйста,получается нуно просто вводить предложение, и потом запросить у пользователя число N, по скольку символов строчку разбить.Но смотри если число N будет меньше длинны одного слова, тогда будет что слово разделено на две части. Если не прально понял, приведи пример ввода данных и того, что получить нуно.
0
|
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
27.11.2008, 12:07 | 5 |
Вот еще решение первой задачи. Здесь наглядно видно, что стороки матрицы сортируются по возрастанию суммы четных отрицательных элементов, может понравится.
Код
Program opr_poryadka; uses crt; const line=50; stol=30; var a:array[1..line,1..stol] of integer; (*massiv*) s:integer; (*summa elementov*) i,j,n,m,p,t: integer; begin clrscr; repeat write('Vvedite kol-vo strok n=');readln(n); write('Vvedite kol-vo stolbcov m=');readln(m); until (n>0)and(n<=line)and(m>0)and(m<=stol); for i:=1 to n do for j:=1 to m do read(a[i,j]); readln; clrscr; writeln('Ishodnaia matrica:','Summa':m*5-9); for i:=1 to n do begin s:=0; for j:=1 to m do if (a[i,j]<0)and(a[i,j] mod 2=0) then s:=s+a[i,j]; {сумма отрицательных четных по строкам} a[i,m+1]:=s; {вставляем сумму в матрицу лишним столбцом справа} end; for i:=1 to n do begin for j:=1 to m+1 do if j=m+1 then write(a[i,j]:8) {выводим последний столбец с суммами с большим отчтупом} else write(a[i,j]:5); {остальные столбцы обычно} writeln; end; writeln; for i:=1 to n-1 do {сортировка строк} for p:=1 to n-1 do if a[p,m+1]>a[p+1,m+1] then {по возрастанию сумм (последний столбец)} begin for j:=1 to m+1 do begin t:=a[p,j];a[p,j]:=a[p+1,j];a[p+1,j]:=t; {сортируем все элементы в других столбцах, строки переставляются} end; end; writeln('Sortirovka strok:','Summa':m*5-8); for i:=1 to n do begin for j:=1 to m+1 do if j=m+1 then write(a[i,j]:8) {такой же вывод} else write(a[i,j]:5); writeln; end; readln end. To Arriba Суть задачи в том, что вводишь строки длиной скажем от 40 до 50 символов длиной. Вводишь число N=60. Все строки должны стать длиной 60 символов за счет добавления пробелов между словами. Короче форматирование по ширине как в Ворде. Видимо если строка длиной более N, то ее надо перенести и остаток тоже отформатировать, короче немного повозиться надо.
1
|
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
|
|
27.11.2008, 13:02 [ТС] | 6 |
Arriba, думаю, что по поводу 2ой задачки Puporev прав
0
|
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
|
|
27.11.2008, 21:18 | 7 |
Puporev, но всё таки, если вдруг строчка состоит из одного слова, а N меньше длинны слова? или надо это отсекать? А насчёт выравнивания ты прав, есть у меня идейка как реализовать.
0
|
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
27.11.2008, 21:26 | 8 |
0
|
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
|
|
27.11.2008, 21:37 | 9 |
Puporev, это ты верно подметил. Как поймут так и в форум пишут, нет чтоб написать нормально, как почеловечески препод им написал...Но бывает и препод чудик, задаст хрен знает что а потом и говорит, ой чёт я ошибся...
0
|
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
|
|
28.11.2008, 13:51 [ТС] | 10 |
в методичке именно так, слово в слово, задачка и сформултрована
0
|
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
|
|
29.11.2008, 00:03 | 11 |
Ты хоть прочти, какой мы вопрос задаём, а то зделаем как захотим, думаешь переделывать захочется....!!!Пока не ответиш, даж и не возьмёмся...
0
|
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
|
|
29.11.2008, 18:27 [ТС] | 12 |
думаю надо отсекать вероятность, что N меньше длинны слова
0
|
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
|
|
01.12.2008, 18:45 [ТС] | 13 |
Arriba, помоги, плиз, со 2ой задачкой...
0
|
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
|
|
02.12.2008, 09:43 | 14 |
0
|
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
02.12.2008, 13:00 | 15 |
Вот написал для реального случая, без выкрутасов, т.е. имеем массив строк длиной до 50 символов, содержащих хотя бы 1 пробел. Нужно установить длину строки например в 60 символов, можно 70, 80. В таком случае программа корректно работает. Думаю на первую сдачу пойдет.
Код
uses crt; const sh_str=60; var s:array[1..20] of string; i,n,j:integer; begin clrscr; repeat write('Введитите количество строк:'); readln(n); until (n>=1)and(n<=20); writeln('Введите ',n,' строк, длиной не более 50 символов,содержащих хотя бы 1 пробел:'); for i:= 1 to n do repeat readln(s[i]); until (length(s[i])<=50)and(pos(' ',s[i])>0); {проверяем строки на соответствие по длине и наличию пробела} for i:=1 to n do begin j:=1;{если j=1 заканчиваем} while Length(s[i])<sh_str do{пока строка меньше заданного размера} if (j>1) then {если j>1, то вставляем пробелы за пробелами} begin if (s[i][j]=' ') and (s[i][j+1]<>' ') then Insert(' ',s[i],j); Dec(j) {после каждой вставки уменьшаем j} end else j:=Length(s[i])-1;{изначально j на 1 меньше длины строки короче увеличиваются пробелы, увеличивается длина строки, уменьшается "запас" пробелов} writeln(s[i]); end; readln end.
1
|
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 33
|
|
02.12.2008, 13:13 [ТС] | 16 |
Puporev, огромное спасибо, выручил))
0
|
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
|
|
04.12.2008, 22:05 | 17 |
Puporev, спасиб подсобил...
0
|
04.12.2008, 22:05 | |
Помогаю со студенческими работами здесь
17
Обработка и модификация одномерных числовых массивов Обработка числовых и символьных последовательностей
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |