Убедительная просьба ко всем, кто выкладывает исходники: 1. Обязательно пользуйтесь тэгом code (иначе очень трудно читать)
2. Старайтесь делать отступы
Если вы хотите чтобы вам помогли в написании программы, внятно излагайте задание!
Прежде чем задать вопрос, воспользуйтесь учебником
Возможно, что нужная вам программа уже написана, поэтому советую просмотреть список здесь и здесь Отредактировано куратором: Lord_of_Darkness. Дата: 07.07.2006 19:36
В общем у меня теперь вопрос судя из задания, надо ли брать у первого месяца процент или нет то есть первый месяц будет 4000 или 4120 ?
Вот еще раз процитирую задание:
Цитата:
Ежемесячная стипендия студента составляет А руб., а расходы на проживание превышают стипендию и составляют В руб. в месяц. Рост цен ежемесячно увеличивает расходы на 3 %. Составьте программу расчета суммы денег, которую необходимо единовременно попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию.
Парни задача аналогична той которую я написал выше Отличатеся только вывод результатов на экран В этом случае нам надо вывести результат по столбцам, но до первого элемента содержащего "?" (знак вопроса)
Код:
program lab2_v7; uses crt; var G: array [1..3,1..3] of char; i,j:integer; begin clrscr; writeln('Obrabotka massiva'); writeln('Avtor....'); writeln('Vvod po strokam'); for i:=1 to 3 do for j:=1 to 3 do begin write ('G[',i,',',j,']='); readln(G[i,j]); end;
до этого места так же все правильно, программа по строкам запрашивает символы (char)
как дальше быть?
Код:
writeln('Vivod po stolbcam'); for j:=1 to 3 do for i:=1 to 3 do if G[i,j]='?' then readln; end.
fos1k Дык пишете то же самое, что и в прошлый раз, только вместо вывода очередного элемента массива - write(G[i,j],' '); пишете
Код:
begin write(G[i,j],' '); if G[i,j]='?' then goto Exit_2_cycle end;
Метка Exit_2_cycle должна стоять после завершения обоих циклов.
В результате будут выведены элементы массива до первого встреченного элемента, равного ? (причем ? тоже будет выведен). Если нужно не выводить ?, то сначала пишется условие, а потом вывод.
R73 Угу, дурной тон . Вот только для одного break'а выход происходит из одного цикла, а надо из двух циклов. Можно оформить в виде процедуры, но это уже вопрос к автору - что им по заданию можно использовать.
ну через процедуры тоже можно, но хочется как то попроще да если использовать BREAK то программа останавливается на только в строчке, в которой присутствует "?" и далее также прописывает остальные элементы массива можно как то обьеденить два цикла под один BREAK ? или как то его в 2-х местах поставить ??
Код:
program lab2_v7; uses crt; var G: array [1..3,1..3] of char; i,j:integer; begin clrscr; writeln('Obrabotka massiva'); writeln('Avtor'); writeln('Vvod po ctrokam'); for i:=1 to 3 do for j:=1 to 3 do begi write ('G[',i,',',j,']='); readln(G[i,j]); end; writeln('Vivod po stolbcam'); for i:=1 to 3 do begin for j:=1 to 3 do begin write(G[j,i],' '); if G[j,i]='?' then break; end; writeln; end; readln; end.
Member
Статус: Не в сети Регистрация: 25.01.2008 Откуда: СПб
В данном случае действительно лучше метка. А в серьезных программах делаешь отдельную процедуру вывода и прерываешь её через EXIT. maco абсолютно прав.
fos1k писал(а):
можно как то обьеденить два цикла под один BREAK ?
при использовании модуля graph.tpu выдается ошибка "The NTVDM CPU has encountered an illegal instruction." моя версия связана с винчестером SATA т.к. около 2-х лет назад на винчестере с IDE все работало нормально! как можно эту ошибку обойти???
дан двухмерный массив размерности N х М, заполненный случайными числами. Определить, есть ли в данном массиве строка, в которой сумма элементов больше заданного числа Р
Код:
Program kontr; uses crt; var A:array [1..10,1..10] of real; n,m,i,j: integer; s,p:real; begin clrscr; writeln('Vvedite razmernost massiva (NxM)'); write('N = '); read(n); write('M = '); read(m); writeln('Vvedite zadannoe chislo P'); write('P = '); readln(P); for i:=1 to n do for j:=1 to m do A[i,j]:=random(20); writeln; writeln('poluchenniy massiv:'); writeln; for i:=1 to n do begin for j:=1 to m do begin write(' ',A[i,j],' '); end; writeln; end; for i:=1 to n do begin s:=0; s:=s+A[i,j]; if (s > p) then writeln (i,' stroka') else writeln('otcytctvyet'); end; readln; end.
выдает не совсем то что нужно(( что то тут не так в последнем цикле, но как сделать правильно? подскажите пожалуйста
maco спасибо! а как сделать чтоб отображались и остальные строки в которых условие выполняется? а то если в 3 и в 5 строке условие выполняется, то программа выдаст только 5 строку
как сделать чтоб отображались и остальные строки в которых условие выполняется?
Если вы вставили приведенную строку в указанное место вашего кода, то на каждую строку у вас должен быть выдан ответ либо x stroka, либо otcytctvyet. Если же вы еще что-то делали, то приводите код.
Привет. Помогите пожалуйста написать пару задачек на TurboPascal 7.0. Заранее спасибо за помощь.
1. Пусть вводится последовательность из целых чисел, оканчивающаяся нулём. Найти два наименьших числа последовательности. (числа как я поняла вводятся с клавиатуры через Enter).
2. Написать программу, которая преобразует строку содержащую значение календарной даты в форме мм/дд/гг (месяц/день/год) к форме "Месяц день. год". Например, строка "12/14/60" преобразуется к виду "Декабрь 14.1960" (предполагается, что все даты относятся к XX веку).
Сейчас этот форум просматривают: Google [Bot] и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения