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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2012, 21:40   #11
m1croN
Пользователь
 
Регистрация: 19.02.2012
Сообщений: 10
По умолчанию

Благодарю. А если не трудно, то можно пожалуйста пример с while с EOF и EOLN?
m1croN вне форума Ответить с цитированием
Старый 19.02.2012, 21:53   #12
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Код:
type mas=array of array of longint;
const n=4;
var i,a,b,j:integer;
y,u:mas;
f:text;
c,d:mas;
begin
assign(f,'Input.txt');
reset(f);
i:=0;//в динамических массивах перечесление начинается с 0, а не с 1
j:=0;
setlength(C,0,0);//на всякий случай устанавлеваем размерность массива в 0х0
while not EOF(F) do//пока не конец файла
  begin
    setlength(C,length(c)+1,2);//размерность массива по строкам каждый раз становится на единицу больше
    while not EOLN(F) do//пока не конец строки
      begin
        read(F,C[i,j]);
        j:=j+1;
      end;
    i:=i+1;
    j:=0;
    readln(F);
  end;
  readln
end.
Цитата:
Сообщение от input.txt
16565 5656454
454 444535
45 16516516
66546546 654
65465 6546445
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 19.02.2012, 22:01   #13
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

А вот пример, если количество строк указано в самом файле:
Код:
type mas=array of array of longint;
const n=4;
var i,a,b,j:integer;
y,u:mas;
f:text;
c,d:mas;
begin
assign(f,'Input.txt');
reset(f);
readln(f,i);//в i считали количество строк
setlength(c,i,2);
i:=0;//в динамических массивах перечесление начинается с 0, а не с 1
j:=0;
while not EOF(F) do//пока не конец файла
  begin
    while not EOLN(F) do//пока не конец строки
      begin
        read(F,C[i,j]);
        j:=j+1;
      end;
    i:=i+1;
    j:=0;
    readln(F);
  end;
  readln
end.
Цитата:
Сообщение от input.txt
5
16565 5656454
454 444535
45 16516516
66546546 654
65465 6546445
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 19.02.2012, 22:02   #14
m1croN
Пользователь
 
Регистрация: 19.02.2012
Сообщений: 10
По умолчанию

в строках, где есть setlength пишет, что ожидалось 2 параметров..почему так? О_о
m1croN вне форума Ответить с цитированием
Старый 19.02.2012, 22:07   #15
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от m1croN Посмотреть сообщение
в строках, где есть setlength пишет, что ожидалось 2 параметров..почему так? О_о
Ну массив то двухмерный... 90% программ, что я выкладываю на форум, я заускаю у себя и проверяю. Так что показывай свой код, будем думать.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 19.02.2012, 22:12   #16
m1croN
Пользователь
 
Регистрация: 19.02.2012
Сообщений: 10
По умолчанию

Просто скопировал ваш код, паскаль ABC.NET.
m1croN вне форума Ответить с цитированием
Старый 19.02.2012, 22:24   #17
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

В дэлфи и FPC все норм... Погуглил АВС, нашел такой код:
Код:
 for i:=0 To n-1 Do
  SetLength(A[i],n); {многомерные массивы в PascalABC можно определять как массивы массивов}
В твоем случае, видимо, так:
Код:
for j:=0 To i-1 Do
  SetLength(A[j],2);
Сам я в АВС не писал, так что за правильность не ручаюсь.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 19.02.2012, 22:37   #18
m1croN
Пользователь
 
Регистрация: 19.02.2012
Сообщений: 10
По умолчанию

Ладно, идею я понял завтра погуглю, допилю чтобы заработало как надо)
Спасибо за ваше время! =)
m1croN вне форума Ответить с цитированием
Старый 20.02.2012, 21:12   #19
m1croN
Пользователь
 
Регистрация: 19.02.2012
Сообщений: 10
По умолчанию

Госпаде простите пожалуйста. Программа выдает не то, что надо.
Текст задачи.
Люди часто сталкиваются с проблемой выбора наиболее подходящего тарифного плана у операторов сотовой связи. Для помощи им в этом необходимо написать программу, находящую оптимальный тарифный план с точки зрения минимизации затрат. Известно, что в месяц человек посылает A смс-сообщений и разговаривает по мобильному телефону в течении B минут. Есть N тарифных планов, для каждого из которых известна стоимость отправки одного смс-сообщения и одной минуты разговора. Требуется найти тарифный план, при подключении к которому суммарные затраты в месяц будут минимальны.

Формат входного файла

В первой строке входного файла Input.txt находятся три целых числа N, A, B (1 ≤ N, A, B ≤ 100). Следующие N строк входного файла содержат по два целых числа Ci и Di (1 ≤ Ci, Di ≤ 100) — стоимость отправки одного смс-сообщения и стоимость одной минуты разговора.

Формат выходного файла

В выходной файл Output.txt требуется вывести номер искомого тарифного плана. Тарифы пронумерованы в порядке появления во входном файле. Если оптимальных ответов несколько, выведите любой.

Текст моей программы
Код:
program lolo;
uses crt;
type mas=array [1..100,1..2] of longint;
var n,i,a,b,j,c,d,r,x,v:integer;
etalon:longint;
g:mas;
f:text;

begin
assign(f,'Input.txt');
reset(f);
i:=0;
j:=0;
etalon:=30000;
read(f,n,a,b);
for i:=1 to n do
 begin
  for j:=1 to 2 do
   begin
    read(f,g[i,j]);
    write(g[i,j]:3);
    end;
    writeln;
    end; {имеется готовый массив g}
         {не ругайтесь, что я не сделал}
         {нижеперечисленные действия сразу же}
         {просто мне так спокойнее}
    
    for i:=1 to n do
     begin
     for j:=1 to 2 do
      begin
      if j=2 then x:=g[i,j]*d {находим стоимость минуты разговора}
      else {минута разговора во 2-ом столбце}
      r:=(g[i,1]*c);{стоимость смс сообщения}
      {она в 1-ом столбце}
      
      
      if (r+x)<etalon then {если их сумма меньше эталона} 
       begin
      etalon:=(r+x); {то присваиваем счетчику номер строки}
                     {который является номером тарифа}
      v:=n;           {обнуляем все заного}
      x:=0;
      r:=0;
      end;
    end;
    end;
    writeln('Best tarif- ',v); {выводим пока просто на экран}
    
    end.
Ткните носом в ошибку пожалуйста

Последний раз редактировалось ACE Valery; 21.02.2012 в 00:34.
m1croN вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как обработать двумерный массив из файла _LEX_ Помощь студентам 6 02.01.2012 18:56
Запись из файла в массив It is not me Общие вопросы C/C++ 1 22.09.2011 20:59
Запись в двумерный массив Vova777 Общие вопросы Delphi 2 02.09.2011 20:57
Ввод с файла в двумерный массив Qlry Общие вопросы C/C++ 1 14.05.2011 22:26
запись с файла в массив darkmonk Общие вопросы C/C++ 2 29.11.2009 20:21