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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2012, 18:38   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хреновасто...
Код:
var f:text;s:string;k,n,i:integer;
begin
 assign(f,'файл');reset(f);
 readln(s);
 n:=3;
 while not eof(f) do begin
  readln(f,s);
  for i:=1 to n do begin k:=pos(';',s);delete(s,1,k+1);end;
  k:=pos(';',s);
  writeln(copy(s,1,k));
 end;
 close(f);
end;
Где: n - это номер колонки.
Алгоритм таков: Удаляем все поля до определенного из каждой записи. Определенное выводим на экран.
Прога может слажать если ; содержится внутри поля.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.12.2012, 20:20   #12
I_love_dvorak
Новичок
Джуниор
 
Регистрация: 16.12.2012
Сообщений: 14
По умолчанию

OMG Вот это да
Не обнаружил у себя эту прогу на руби, поэтому исходник похожей, но без создания полей скопирую:
Код:
require "csv"
require "sunlight"

class EventManager
  INVALID_PHONE_NUMBER = "0000000000"
  INVALID_ZIP_CODE = "00000"
  Sunlight::Base.api_key = "e179a6973728c4dd3fb1204283aaccb5"

  def initialize(filename)
    puts "EventManager Initialized."
    @file = CSV.open(filename, {headers: true, header_converters: :symbol})
  end

  def print_names
    @file.each do |line|
      puts line[:first_name]
    end
  end

  def clean_numbers(original)
    number = original.delete("., ,(,),-")
    if number.length == 10
      number = number
    elsif number.length == 11
      if number.start_with?("1")
        number = number[1..-1]
      else
        number = INVALID_PHONE_NUMBER
      end
    else
      number = INVALID_PHONE_NUMBER
    end
    return number
  end

  def print_numbers
    @file.each do |line|
      number = clean_numbers(line[:homephone])
      puts number
    end
  end

  def clean_zip_code(original)
    if original.nil?
      zipcode = INVALID_ZIP_CODE
    elsif original.length < 5
      until original.length == 5
        original = "0" + original
        zip_code = original
      end
    else
      zip_code = original
    end
    return zip_code
  end

  def print_zip_code
    @file.each do |line|
      zip_code = clean_zip_code(line[:zipcode])
      puts zip_code
    end
  end

  def output_data(filename)
    output = CSV.open(filename, "w")
    @file.each do |line|
      if @file.lineno == 2
        output << line.headers
      else
        line[:homephone] = clean_numbers(line[:homephone])
        line[:zipcode] = clean_zip_code(line[:zipcode])
        output << line
      end
    end
  end

  def rel_lookup
    20.times do
      line = @file.readline

      legislators = Sunlight::Legislator.all_in_zipcode(clean_zip_code(line[:zipcode]))
      names = legislators.collect do |leg|
        first_name = leg.firstname
        first_initial = first_name[0]
        last_name = leg.lastname
        first_initial + ". " + last_name
      end
      representative = "unknown"
      puts "#{line[:last_name]}, #{line[:first_name]}, #{line[:zipcode]}, #{names.join(", ")}"
    end
  end

  def create_form_letters
    letter = File.open("form_letter.html", "r").read
    20.times do
      line = @file.readline

      custom_letter = letter.gsub("#first_name", line[:first_name].to_s)
      custom_letter = custom_letter.gsub("#last_name", line[:last_name].to_s)
      custom_letter = custom_letter.gsub("#street", line[:street].to_s)
      custom_letter = custom_letter.gsub("#city", line[:city].to_s)
      custom_letter = custom_letter.gsub("#state", line[:state].to_s)
      custom_letter = custom_letter.gsub("#zipcode", clean_zip_code(line[:zipcode]).to_s)
      filename = "output/thanks_#{line[:last_name]}_#{line[:first_name]}.html"
      output = File.new(filename, "w")
      output.write(custom_letter)
    end
  end

  def rank_times
    hours = Array.new(24){0}
    @file.each do |line|

    end
    hours.each_with_index{|counter,hour| puts "#{hour}\t#{counter}"}
    hours[hour.to_i] = hours[hour.to_i] + 1
  end
end

#Script
manager = EventManager.new("event_attendees.csv")
#manager.output_data("event_attendees_new.csv")
manager.rank_times
З.Ы. Я такой слепой, или тут нельзя под кат кидать большие кустки текста?)
I_love_dvorak вне форума Ответить с цитированием
Старый 16.12.2012, 21:01   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
поэтому исходник похожей
Офакаллпипл...
Я эту прогу "ниасилю"... Вот так сходу по крайней мере перевести мне не удастся.
Цитата:
тут нельзя под кат кидать большие кустки текста?)
Ограничение не более 5к символов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.12.2012, 21:17   #14
I_love_dvorak
Новичок
Джуниор
 
Регистрация: 16.12.2012
Сообщений: 14
По умолчанию

Ну ладно, черт с ним Все-равно спасибо большое
I_love_dvorak вне форума Ответить с цитированием
Старый 16.12.2012, 22:06   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пожалуйста. Если это не принципиально советую поменять паскаль. Тогда возможно будет использовать даже ODBC для получения данных SQL запросами, а это универсально и гибко.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.12.2012, 22:07   #16
I_love_dvorak
Новичок
Джуниор
 
Регистрация: 16.12.2012
Сообщений: 14
По умолчанию

Я попробую Еще раз спасибо Тему можно закрывать
I_love_dvorak вне форума Ответить с цитированием
Старый 17.12.2012, 23:23   #17
I_love_dvorak
Новичок
Джуниор
 
Регистрация: 16.12.2012
Сообщений: 14
По умолчанию

Попробую немного оживить этот тред
Вот, что у меня начало возникать в голове:
Код:
program manager_helper;

type hotel_floor = record
	floor_number: Byte;
	room_number: Byte;
	room_reserved: Boolean;
	tworoom_double: Boolean;
end;

var
	base: file of hotel_floor;
	floor: array[1..8] of hotel_floor;
	hf: hotel_floor;
	select: Byte;
procedure loadInfo();
begin
	assign(base, 'table.txt');
	reset(base);
	while not eof (base) do
	begin
		read(base, hf);
		writeln(hf.room_number, ' ', hf.room_reserved);
	end;
end;
procedure newroom();
	var i: Byte;
begin
	assign(base, 'table.dat');
	reset(base);
	seek(base, filesize(base));
	writeln('Enter the floor number:');
	readln(i);
	
	if (i < 0) then begin
		writeln('There is no underground floors.');
	end;
	if (i > 9) then begin
		writeln('There is only 8 floors.');
	end;
	if (i = 1) then begin
		writeln('There are no rooms at that floor.');
	end;
	if (i = 2) then begin
		hf.floor_number:=i;
		writeln('Floor ', i, ' is selected.');
		writeln('There is 8 two-room double rooms at that floor.');
		writeln('Select a room:');
		readln(hf.room_number);
		write(base, hf);
	end;
end;

procedure fill();
var
	i, j: Integer;
begin
	assign(base, 'table.dat');
	rewrite(base);
	for i := 1 to 8 do begin
		hf.floor_number := i;
		if (i = 2) then begin
			for j := 0 to 8 do begin
				hf.room_number := j;
				hf.room_reserved := false;
				hf.tworoom_double := true;
				write(base, hf);
			end;
		end;
		if (i = 3) and (i = 4) then begin
			for j := 1 to 16 do begin
				hf.room_number := j;
				hf.room_reserved := false;
				hf.tworoom_double := false;
				write(base, hf);
			end;
		end;
		if (i > 4) then begin
			for j := 1 to 16 do begin
				hf.room_number := j;
				hf.room_reserved := false;
				hf.tworoom_double := true;
				write(base, hf);
			end;
		end;
		write(base, hf);
		writeln('Room number ', hf.floor_number, hf.room_number, ' Reserved: ', hf.room_reserved);
		writeln('Two-room double: ', hf.tworoom_double);
	end;

end;

begin
	readln(select);
	case (select) of
		1: fill; 
		else
			writeln('There is no method you select.');
		end;
end.
УПД. Заполнение работает хорошо. Вот только как добавить нули?)

Последний раз редактировалось I_love_dvorak; 17.12.2012 в 23:25. Причина: УПД
I_love_dvorak вне форума Ответить с цитированием
Старый 17.12.2012, 23:55   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Куда нули добавить?
Если речь идет о форматировании номеров мол не "9" а "09" на экран то напиши свою функу:
Код:
function PadZero(i:integer):String;
var s:string;
begin
 str(i,s); if i<10 then s:='0'+s; PadZero:=s;
end;
и далее:
Код:
writeln('Room number ',PadZero(hf.floor_number),...
I'm learning to live...

Последний раз редактировалось Stilet; 18.12.2012 в 00:00.
Stilet вне форума Ответить с цитированием
Старый 18.12.2012, 00:11   #19
I_love_dvorak
Новичок
Джуниор
 
Регистрация: 16.12.2012
Сообщений: 14
По умолчанию

Спасибо большое То, что нужно
I_love_dvorak вне форума Ответить с цитированием
Старый 18.12.2012, 08:35   #20
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Старый досовский не бери - не удобно.
Stilet, ну почему сразу неудобно? Turbo Vision в свое время рулила
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СОСТАВИТЬ ПРОГРАММУ ПО Turbo Pascal RUSSTUDENT Фриланс 11 16.02.2010 17:20
Cоставить программу на ассемблере, помогающую в запоминании исторических дат Tatiana_S Помощь студентам 3 26.01.2010 23:12
Составить программу, помогающую в запоминании исторических дат Tatiana_S Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 26.01.2010 22:54
Помогите составить программу в turbo pascal denis15 Помощь студентам 3 09.06.2009 17:23
Помогите составить программу в turbo pascal denis15 Помощь студентам 1 05.06.2009 18:43