EP 1 - Como que esse programa irá rodar? :o

EP 1 - Como que esse programa irá rodar? :o

por Tobias Sena -
Número de respostas: 123
Vamos supor que o programa se chame "programa". Enquanto roda ele pediria o parâmetro e o arquivo a ser lido, ou faria isso antes de rodar?

Veja se entendem a diferença:
Supondo que o arquivo Livro.txt seja o arquivo a ser utilizado no programa.

A primeira forma de rodar o programa:

$ programa -l Livro.txt /* Coloca o nome do programa, parâmetro/s e o Arquivo a ser lido */
$ xxxx xxxx /* Responderia de acordo com o parâmetro escolhido */

(assim o programa já rodaria direto, e teria que descobrir uma formar para pegar os dados da linha de comando e mandar para o programa)

A outra forma seria:

$ programa /* Roda o programa */
$ -l Livro.txt /* O programa já inicializado pediria o parâmetro e o arquivo a ser utilizado */
$ xxxx xxxx /* Responderia de acordo com o parâmetro escolhido */


Ou será que podemos fazer de qualquer um dos modos?
Pode ser também que não entendi nada, e esses 2 modos não tem nada a ver pensativo
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por Alberto Bueno Junior -
Olha, pelo o que eu entendi deve ser do primeiro jeito que você falou.

Até porque no enunciado do EP tem isso:

"
O programa deve ser escrito em C; um dos objetivos do exercício é que você se familiarize com algumas características da linguagem:
  • Como ler parâmetros da linha de comando.
  • Como abrir vários arquivos em sucessão.
  • Como ler arquivos grandes, com linhas grandes (evite scanf).
"
=)

Mas vamos esperar a palavra do professor.

Em resposta à Alberto Bueno Junior

Re: EP 1 - Como que esse programa irá rodar? :o

por Arnaldo Mandel -
A palavra do professor está no enunciado: "documentação de uso é o manual".

Não tem nada disso de o programa conversar com o usuário.
Em resposta à Arnaldo Mandel

Re: EP 1 - Como que esse programa irá rodar? :o

por Tobias Sena -
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Simionato Solferini -
A pagina do EP1 tah off ou eh o meu pc q tah lokaum da cabeça?
(Ele naum gosta de mim ='( buaaaaaaaaaaaaaaa!!!)
(O viado esquenta mto e naum compila direito =/)
Em resposta à Felipe Simionato Solferini

Re: EP 1 - Como que esse programa irá rodar? :o

por Pedro Faria -
Achei que fosse só comigo...mas eu também não consigo acessar essa página(www.ime.usp.br/~am/122/eps/EP1.html) e nem nenhuma outra página do IME (apesar do paca estar normal).Será que aconteceu alguma coisa?
Em resposta à Pedro Faria

Re: EP 1 - Como que esse programa irá rodar? :o

por Paulo Cheadi Haddad Filho -
Servidor tá instável desde sexta-feira, pelo menos.

É esperar pra melhorar. Vai tentando enquanto isso... =/
Em resposta à Paulo Cheadi Haddad Filho

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Simionato Solferini -
vou dah um ctrl +c , ctrl + v pra se cair a pagina o pessoal conseguir ver sem se perder


MAC122 - EP1

Este exercício-programa consiste numa implementação do comando wc do Linux. Como ele funciona está explicado de forma incompleta na página de manual; uma descrição mais precisa pode ser obtida com o comando
info wc
Para simplificar, seu programa não precisa implementar o parâmetro --files0-from=.
O que é uma palavra para o wc:

Os caracteres ' ' (espaço), '\t' (tab) e '\n' (fim de linha) são chamados de brancos. Uma palavra é uma seqüência de caracteres não brancos maximal, ou seja, não pode ser esticada para a direita ou para a esquerda.

O programa deve ter documentação clara de como ele funciona. Note que é documentação para entender o código; documentação de uso é o manual.

O programa deve ser escrito em C; um dos objetivos do exercício é que você se familiarize com algumas características da linguagem:
  • Como ler parâmetros da linha de comando.
  • Como abrir vários arquivos em sucessão.
  • Como ler arquivos grandes, com linhas grandes (evite scanf).
Idéias para resolver esses subproblemas podem ser livremente discutidas no fórum. Professor e monitores atentos podem até dar dicas, para questões bem formuladas.

Aqui estão arquivos bons e grandes (comprimidos - expanda antes de usar) para testar seu programa A data de entrega é 2/9/2008, até as 23:30; entrega no paca.
Em resposta à Felipe Simionato Solferini

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Simionato Solferini -
alguem entendeu o q tem q fazer no EP? ou fui soh eu q naum??
Em resposta à Felipe Simionato Solferini

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
bom Felipe, basicamente voce deve fazer um programa que receba um arquivo (ou mais), como parametro para a funcao main, que é dado na linha de comando e :

- contar o numero de caracteres
- contar o numero de linhas
- contar o numero de palavras

e imprimi-las. Brinque um pouco com o 'wc'.

Ex : ./wc arquivo.txt ( e com algumas opcoes como -l , -lc, -cw .. etc)

Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Há algum padrão de nomenclatura ou qualquer norma que eu deva seguir no desenvolvimento do EP?
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
Comentar e identar o código.

Em resposta à Atol Fortin de Oliveira

Re: EP 1 - Como que esse programa irá rodar? :o

por Pedro Faria -
Uma dúvida: quando o texto for lido da entrada padrão, é possível considerar a contagem de bytes (mesmo que não se trate de um arquivo) ?
Em resposta à Pedro Faria

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Torres -
Acho que sim. É só dar uma olhada no wc.
Acredito que ele conte os bytes mesmo sem ser um arquivo.

Abraço!
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Eu posso roubar e usar o fato de a calloc preencher um vetor com zeros a meu favor?
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Ah sim, que bibliotecas eu posso usar? E quais funções eu posso usar?
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
quanto à contagem de bytes,
retirado do enunciado:
"Para simplificar, seu programa não precisa implementar os parâmetros --files0-from=, --version, -m e --chars" , talvez esteja ao contrario no enunciado, me parece que, o que nao deve ser implementado é a contagem de bytes (-c e --bytes), e sim a contagem de caracteres (-m e --chars)


bibliotecas:
stdlib e stdio devem ser mais do que suficiente.
Em resposta à Atol Fortin de Oliveira

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Eu usei a string.h para tratar as opções...
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
Em resposta à Atol Fortin de Oliveira

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
O help necessariamente deve ser daquela forma (incluindo a função não implementada do '--files0-from-=F')?
Em resposta à Atol Fortin de Oliveira

Re: EP 1 - Como que esse programa irá rodar? :o

por Arnaldo Mandel -
O enunciado está correto: é para contar bytes, não chars. Só que bytes equivalem ao tipo char do C, portanto é para contar chars dentro do programa. Por outro lado, chars no manual do wc se referem a caracteres de texto, que dependem do locale; a contagem é muito mais complicada e foi retirada do enunciado.

Resumo: para cumprir o enunciado, contando bytes e não chars, seu programa deve contar chars e dizer que contou bytes.
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Alguém sabe por que o wc (especificamente do laboratório da rede Linux do BCC - outros eu ainda não testei) devolve a maior linha "-L" do "gapqm2" maior do que o número de bytes "-c" do arquivo?
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Arnaldo Mandel -
Olha só, eu nem tinha reparado nisso!
Obviamente o wc tem um bug; não é só na rede linux.

Atenção:

Não é preciso reproduzir este bug.


Aliás, ele não deve ser reproduzido.

Vou escrever aos mantenedores do wc, descrevendo o bug.
William, você ganha um bônus na nota por ter encontrado esse erro!
Em resposta à Arnaldo Mandel

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Oi, sobre o bônus... Na realidade, ele não devia ser meu, mas sim da Ana Luiza - visto que foi ela quem me notou o erro e me fez ter conhecimento disso...Eu apenas o postei aqui porque ela não quis...
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por Nicoli G -
Desculpem a pergunta, mas estou sem o wc aqui pra testar:
1. O programa interpreta o --bytes como parâmetro também ou ele só deve usar o c,l,L,w e --help?

2. Se eu não passar nenhum parâmetro ele deve devolver o padrão caracteres, palavras, linhas?
Em resposta à Nicoli G

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
1 - sim, o seu ep deve reconhecer opcoes do tipo --bytes , --words , --lines e
--max-line-length.

2 - sim, sem nenhum tipo de parametro especial, ou seja, só arquivos (e/ou '-'), o padrao eh :
linhas palavras caracteres(bytes)
Em resposta à Nicoli G

Re: EP 1 - Como que esse programa irá rodar? :o

por Nicoli G -
Fiz um arquivo que imprimia os char lidos e os contava, mas quando executo aparecem chars "estranhos" (símbolos e coisas que não foram escritas no arquivo lido). Tem como alguém ajudar?
Em resposta à Nicoli G

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
hummm... dificil de saber o que pode ser.... uma coisa 'comum' é estar imprimindo a variavel errada sem querer, que tenha um nome parecido, por exemplo 'i' no lugar de 'j' ....

outra coisa pode ser imprimir o EOF antes de sair do laço, mas aih seria só uma letrinha estranha no final.

nao imagino o que mais possa ser...
Em resposta à Atol Fortin de Oliveira

Re: EP 1 - Como que esse programa irá rodar? :o

por Nicoli G -
Mas mesmo quando coloco só para contar ele conta errado.
Ele imrpimi apensas MZÉ 'copas' 'ouros'

Tem problema se mostras o código pro professor pra ajudar a identificar onde é o erro?
Em resposta à Nicoli G

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Nicoli, você está formatando adequadamente a impressão?

Se você devolver com '%c' algum inteiro <= 32, então você tem a chance de obter uma figurinha tipo as que você comentou.

O "printf("%c",3);", por exemplo, devolve um coraçãozinho (dependendo da codificação utilizada por seu shell).
Em resposta à Atol Fortin de Oliveira

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
ahhhh nao, agora que eu vi, acho que vc deve estar rodando o seu programa em cima do .gz ....

basta rodar o comando:
gunzip arquivo.gz

isso ira gerar um arquivo de nome 'arquivo' , e aih sim voce pode testar seu executavel.

(se quiser pode ir lah com o 2o botao do mouse e extrair o arquivo ,tambem)
Em resposta à Atol Fortin de Oliveira

Re: EP 1 - Como que esse programa irá rodar? :o

por Nicoli G -
"basta rodar o comando:
gunzip arquivo.gz"

Eu não estava testando lá, estava testando em um arquivo teste.txt com duas frases, que eu criei.

Em resposta à Nicoli G

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
bom, nao sei oq pode ser... se nao resolver até 4a feira, pode passar na monitoria para tirar duvidas, no CEC a partir das 14:00, 4as feiras
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por Francisco Zigmund Sokol -
O wc do linux tem a opção de ler dois arquivos de uma vez. Se você coloca dois arquivos como paramêtros ele mostra o nº de linhas, nº de palavras e o nº de bytes de cada um dos arquivos, e também o total de cada uma das contagens.

O nosso wc também deve fazer isso?
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por Pedro Faria -

Apenas refazendo uma pergunta: como o professor disse, eu entendi que o programa deve "contar chars e dizer que contou bytes". Porém (apenas por curiosidade), se o arquivo (supondo que a entrada seja um arquivo e não a entrada padrão) for aberto como um arquivo binário, acho que é possível fazer uma contagem de bytes mesmo (testei algumas vezes e parece que funciona - comparando com o tamanho do arquivo mostrado em "propriedades").Gostaria de saber se existe algo análogo para a entrada padrão(teclado). 

Em resposta à Pedro Faria

Re: EP 1 - Como que esse programa irá rodar? :o

por Pedro Faria -

Tentando converter a stdin para modo binário(para fazer a contagem de bytes), acrescentei a linha de código

setmode ( fileno ( stdin ), O_BINARY );

Obs.: também tentei

_setmode( _fileno( stdin ), _O_BINARY );

e  as bibliotecas fcntl.h e io.h (além da stdio.h e da stdlib.h).Porém, o gcc dá o warning "implicit declaration of function fileno(ou _fileno)".Onde poderia estar o problema?

Em resposta à Pedro Faria

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Tua função não existe (na biblioteca), verifique a sintaxe e a versão do compilador...

E é necessariamente a 'fileno'.
Em resposta à Pedro Faria

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
eu nao sei se vc nao entendeu muito bem oq deve ser feito no ep, ou se vc estah fazendo isso soh por divertimento...
mas o fato eh que para contar os bytes tanto da entrada padrao como de um arquivo , vc deve apenas contar o numero de chars do mesmo.

mas respondendo sua pergunta.... eu nao sei do que vc tah falando... =P

Em resposta à Pedro Faria

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Você pode experimentar abrir as bibliotecas e procurar pela função que 'não aparece', apesar de eu achar muito mais simples fazer isso pelo Google e verificar a sintaxe correta da função.
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Ah sim... É... Eu sei que parece meio tarde, mas meu programa deve contar as linhas como o wc, né? (isso implica em ele ser incapaz de ver que tem uma linha caso não tenha o caracter x0A no arquivo)
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Arnaldo Mandel -
Exatamente. Eu cuidei de colocar no enunciado uma definição de "palavra" e descuidei de colocar uma definição de "linha". Uma linha é uma sequência maximal de caracteres terminada pelo '\n'.
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por Geraldo Castro Zampoli -
Como não tenhu acesso ao wc de casa queria saber se ele entende "--wordslines" com ele entenderia "-wl"? ou quando o comando começa com "--" ele entende apenas um para cada "--".
valew a atenção
Em resposta à Geraldo Castro Zampoli

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
a opcao com "--" é "individual" sim, reconhece apenas um tipo de cada vez.
entao para ter o mesmo que um '-wl' vc deve fazer '--words --lines'
Em resposta à Geraldo Castro Zampoli

Re: EP 1 - Como que esse programa irá rodar? :o

por Nicoli G -
Se eu passar dois aqruivos para o wc e os parâmetros -w -l -c, por exemplo. Ele vai retornar o total dos três parametros ou apenas o tortal de linhas?
Em resposta à Nicoli G

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Retorna o total de todos os argumentos que você passou. Atente para a "linha máxima"...
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Nicoli G -
Ultima pergunta, Willina, juro!
Se o usuário não passar arquivo ele ainda pode determinar os parâmetros?

*um dia vou criar vergonha e aumentar meu hd pra colocar linux em casa*
Em resposta à Nicoli G

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Você não precisa necessariamente colocar Linux em casa.

Todavia, se ele NÃO determinar os arquivos, a entrada será via entrada padrão (vulgo teclado) e os parâmetros FARÃO efeito.

Suponha, por exemplo, que você tenha digitado wc -cl.

O que aconteceria é você entrar com dados via teclado e o programinha exibir somente o número de linhas + o número de bytes.
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por André Casimiro -
Olá, gostaria de fazer uma pergunta.

Esse programa que vamos fazer tem diversas "opções de funcionamento"; o usuário que escolhe o que quer saber: o numero de chars (-c); o número de linhas (-l), o tamanho da maior linha (-L), tudo junto... etc...

Agora, na implementação do programa, devemos fazer uma leitura completa e no final exibir somente o que o usuário pediu?

ou deve-se tratar isso de forma separada, de forma a não "perder tempo" fazendo a contagem do que o usuário não requisitou...

Vlw! mostrando a língua
Em resposta à André Casimiro

Re: EP 1 - Como que esse programa irá rodar? :o

por Arnaldo Mandel -
André, o enunciado só faz referência ao comportamento de Entrada/Saída do programa, e é só isso que será cobrado. Ou seja, como você faz as coisas *neste caso* não importa, desde que você realmente programe. Claro que se um engraçadinho escrever algo no estilo de system("wc") , receberá uma nota dada por system("wc -c </dev/null").

Nos próximos EPs haverá ocasionalmente restrições quanto à implementção.
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Eu devo deixar necessariamente na ordem em que o wc exibe? Ou posso deixar na ordem em que aparece na linha de comando? (visto que o wc não diz o que é cada número, seria interessante ficar na ordem...)
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Everton Topan da Silva -
Pelo (pouco) q eu sei acho q não pode usar o goto não
Em resposta à Everton Topan da Silva

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Hahaha, mas é estranho esse preconceito. Se fosse tão feio assim, o comando teria deixado de existir. =P
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Gregory De Bonis -
O Windows deixou de existir?
O Lennon deixou de existir?
O Tibia deixou de existir?

Esse é um comando que existe para não ser utilizado, assim como a tag blink no HTML.
Em resposta à Gregory De Bonis

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Então...

O wc possui um "argumento" obscuro de sintaxe: "wc --"; ele funciona exatamente igual ao wc sem nenhum argumento. Todavia, quando se faz "wc -- --" ele diz que não existe um arquivo cujo nome é '--' [o que eu suponho que deveria ter acontecido previamente].

Devemos implementar essa coisa estranha que - ao meu ver - não parece ter sido documentada no 'info wc' tampouco no 'wc --help' ?
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
eh, isso eh bem estranho...

pelo que eu percebi, ao colocar um -- sem mais nada na frente, vc ativa uma opcao que ignora 'opcao nao reconhecida' ,

ou seja, se vc fizer wc --ashduahd , ou wc -dadrgg , ele diz que eh uma opcao nao reconhecida,

mas, se vc fizer wc -- -ah -sdhfj --agash , ele interpreta esses parametros como se fossem arquivos, e ateh mesmo se:
wc -- --arquivo -l , ele tenta procurar o arquivo -l ,

e mais, esse -- eh uma opcao diferente das outras, pois ele passa a valer soh daquele momente em diante.
quero dizer, wc -l arq , e wc arq -l , fazem a mesma coisa, indepente de onde vc coloque a opcao para impressao de linhas ou outras coisas, ele aplica essas regras para todos os arquivos....
mas a opcao especial -- soh eh aplicada aos argumentos seguintes.

bom, eu nao tenho certeza de tudo isso que eu escrevi, acabei de testar e pelo que vi, me parece que ele eh assim.... e bom, na implementacao de vcs, ACHO que podem considerar um wc -- como opcao nao reconhecida...
Em resposta à Atol Fortin de Oliveira

Re: EP 1 - Como que esse programa irá rodar? :o

por Arnaldo Mandel -
Sobre o --:

Realmente, o -- não aparece esplicitamente no manual do wc. Mas ele é menos obscuro do que parece. Executando info coreutils aparece o ítem

* Common options:: Common options.

e entrando nele aparece a explicação

`--'
Delimit the option list. Later arguments, if any, are treated as
operands even if they begin with `-'. For example, `sort -- -r'
reads from the file named `-r'.

A expliação do significado já descreve a utilidade do -- .

Entretanto, como não estava visível no manual esta opção, não haverá penalização para quem não implementar essa opção.
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Qual a definição de EP funcionando perfeitamente?
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
as funcionalidades que estao no enuciado.
Em resposta à Atol Fortin de Oliveira

Re: EP 1 - Como que esse programa irá rodar? :o

por Francisco Zigmund Sokol -
Mas então eu posso me preocupar só em tratar apenas casos em que o usuário coloca arquivos que existem e parâmetros que também existem, ou preciso definir o que o programa deve fazer quando algum usuário mal informado coloca coisas estranhas ao executar o programa?
Em resposta à Atol Fortin de Oliveira

Re: EP 1 - Como que esse programa irá rodar? :o

por Nicoli G -
Então, mesmo que eu não use as funções da forma mais eficiente possível, não haverá desconto?
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por Francisco Zigmund Sokol -
Acho que eu encontrei outro bug no wc. Quando eu coloco "-l" como parâmetro, sem nenhum outro, ele lê a entrada padrão mas retorna sempre uma linha a menos do que o verdadeiro. Por exemplo:


csokol@csokol-desktop:~/Área de Trabalho$ wc -l
a
b
c2


O wc imprimiu na tela esse "2" que veio grudado no "c", mas deveria imprimir 3. Aparentemente ele conta o número de \n's.
Qual é o tratamento exato que a gente deve dar à entrada padrão? O programa deve reconhecer os parâmetros "-l", "c", e etc. nesse caso também?
Em resposta à Francisco Zigmund Sokol

Re: EP 1 - Como que esse programa irá rodar? :o

por Atol Fortin de Oliveira -
bom, eh, eu acho que vc nao precisa mudar nada no seu codigo pra ele soltar a mesma resposta que o wc, apesar disso parecer ser bem estranho tambem.

faça o mesmo que vc faz para um arquivo, soh trate a leitura...

pelo que percebi um arquivo coloca um '\n' no final da ultima linha, talvez.

mas a questao eh que vc nao precisa mudar nada.
Em resposta à Francisco Zigmund Sokol

Re: EP 1 - Como que esse programa irá rodar? :o

por Yuri Almeida -
Isso não é um bug cara, se você ler a documentação.. está escrito que o WC conta NEW LINES.. ou seja, conta linhas NOVAS não conta o número de linhas, muita gente vai roda nessa parte por não prestar atenção quando está lendo em ingles.

Portanto quando você escreve (em parênteses os comandos implicitos):

wc -l -
"A(\n)
A(\n)
A(EOF)"

Ele lê apenas os 2 \n que existem na entrada. E para quando chega no EOF.

"2 -"
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por Geraldo Castro Zampoli -
Quando entreagar o ep, devo entregar so o arquivo.c ou devo entregar tbm o bash num arquivo compactado?
Se sim que extensão uso para compactar?
Valeww
Em resposta à Geraldo Castro Zampoli

Re: EP 1 - Como que esse programa irá rodar? :o

por Arnaldo Mandel -
Se seu programa está em um arquivo só (razoável, para o wc), não precisa adicionar um programa bash para compilação. No máximo, coloque num comentário, junto ao cabeçalho, a linha de comando que você usa para compilar.
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por andre muto -
o wc conta como 2 chars uma letra acentuada? ou é só aqui? devemos implementar isso tbm?
Em resposta à andre muto

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Depende do acento que você utiliza, parte das letras acentuadas estão previstas na tabela ASCII (que varia de 0 a 255, o que dá exatamente 1 byte que é o range do char).

Eu não faço idéia se todas as acentuações estão previstas, muito provavelmente, uma ou outra deve ser de uma codificação superior...
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Simionato Solferini -
Japones viado!!!!!

Corno!!
Tá ferrado!
Vou te acordar a semana inteira =P
AHUyAuhahuAhuAhuAhua

quantos pontos eu perderia se não conseguisse colocar a entrada padrão?

Em resposta à Felipe Simionato Solferini

Re: EP 1 - Como que esse programa irá rodar? :o

por Everton Topan da Silva -
falando em entrada padrão, como o wc para quando vc esta digitando??algum caracter de saida???
não encontrei isso no manual (se bem q meu ingles não é la essas coisas)
Em resposta à Everton Topan da Silva

Re: EP 1 - Como que esse programa irá rodar? :o

por Ana Luiza Basalo -
É só usar ctrl d e a digitação é concluída, Everton.
Tenho uma dúvida: para mim, ainda não ficou claro qual é a definição do comprimento da maior linha (--max-line-length). Pelo que eu entendi, o '\n' não é considerado nessa contagem, certo? E devo considerar o '\t' como 8?
Agradeço quem puder ajudar.
Em resposta à Ana Luiza Basalo

Re: EP 1 - Como que esse programa irá rodar? :o

por Everton Topan da Silva -
vlw Luiza sou muito noob em linux :p

Pelo que me lembro o prof disse em aula q deveriamos contar o tab (\t) como 1 caracter
Em resposta à Everton Topan da Silva

Re: EP 1 - Como que esse programa irá rodar? :o

por Everton Topan da Silva -
Nós devemos implementar esse esquema do ctr+d???
Em resposta à Everton Topan da Silva

Re: EP 1 - Como que esse programa irá rodar? :o

por Lucas Guimarães Gassert -
Se você mandar o programa ler da entrada-padrão, não é necessário.
A entrada-padrão reconhece isso "tomaticamente"...

E pro pessoal que usa Burrindows em casa: o comando de fim da entrada-padrão é Ctrl+Z!
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por Almir Alves Pereira -

estava fazendo uns testes no meu ep e percebi um negocio curioso:

se o arquivo de texto esta em formato DOS/Ruimdows(c) cada \n conta como 2 bytes e se ta no formato UNIX o \n soh tem 1 byte (se vc tentar rodar um arquivo UNIX no notepad do Ruimdows(c) vai dar problema)

no ep devemos considerar qual formato? o wc reconhece os dois...

como eu faço p/ o meu programa reconhecer a codificação do arquivo?

(buaaaaaaaaaaaaaaaaaaaaaaaaaaa eu naum sei usar linux triste)

Em resposta à Almir Alves Pereira

Re: EP 1 - Como que esse programa irá rodar? :o

por Marcos de Azevedo Iriarte -
O dito formato Windows representa uma quebra de linha por 2 caracteres: o \n (line feed- 10) e o \r (carriage return- 13). Nos Unix's da vida, somente o \n é colocado e considerado. Por isso que você recebeu essa coisa estranha. O wc reconhece como nova linha pelo \n e na contagem de caracteres reconhece também o \r.
Posso falar besteira, mas que eu lembre o formato do Mac é só o \r.

Até!


Em resposta à Marcos de Azevedo Iriarte

Re: EP 1 - Como que esse programa irá rodar? :o

por Paulo Cheadi Haddad Filho -
Mas quais são os caracteres "especiais" a serem procurados? \t, \r e \n? só?

Tô perguntando porque eu tô verificando por eles e por espaços, mas a minha contagem de palavras tá dando a mais que o do 'wc', então eu suspeito que deve ser algo que eu não coloquei na comparação...
Em resposta à Paulo Cheadi Haddad Filho

Re: EP 1 - Como que esse programa irá rodar? :o

por Marcos de Azevedo Iriarte -
Sei lá, tem tanto caracter (ou não) que tem que ser considerado.Em tese, brancos também, caracter 0 ('\0'), EOF...
Em resposta à Paulo Cheadi Haddad Filho

Re: EP 1 - Como que esse programa irá rodar? :o

por Paulo Cheadi Haddad Filho -
Pra curiosidade geral, existem mais dois carateres de espaço:
- o \f, vulgo form feed;
- e o \v, que é o 'tab vertical'.

Não que eu ache que existam em um arquivo, mas por via das dúvidas eu considerei essas possibilidades.

Agora, o meu problema não era esse, e sim de lógica mesmo. Já consertei e contou direitinho. =)
Em resposta à Paulo Cheadi Haddad Filho

Re: EP 1 - Como que esse programa irá rodar? :o

por Marcos de Azevedo Iriarte -
Se for sair correndo procurando caracter de parada, pode colocar o '\4' ( EOT - End of Tape ). :P

Até!
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por Everton Topan da Silva -
O meu programa ta dando warning sobre o uso da função gets, está dizendo que é uma função perigosa e que não deve ser usada
esse warning descontaria alguma coisa na minha nota só por existir ou só será descontado se der segmentation falt????
Em resposta à Everton Topan da Silva

Re: EP 1 - Como que esse programa irá rodar? :o

por Everton Topan da Silva -
ja desisti de usar o gets
Em resposta à Everton Topan da Silva

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Torres -
tenta o getchar... ^^
talvez dê certo... =P
Em resposta à Felipe Torres

Re: EP 1 - Como que esse programa irá rodar? :o

por Everton Topan da Silva -
é isso msm que eu to usando

só não entendi o pq dele não me deixar usar o gets
Em resposta à Everton Topan da Silva

Re: EP 1 - Como que esse programa irá rodar? :o

por Arnaldo Mandel -
Por que você não usa o gets assim mesmo e testa seu programa com o arquivo gapqm2? Talvez assim dê para perceber onde está o problema.

Aliás, criei mais um arquivo de teste, que aparece na página do enunciado. Bom proveito.
Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por André Casimiro -
Olá,
Alguém poderia me explicar a diferença entre as duas linhas abaixo:

variavel_struct.propriedade
variavel_struct->propriedade

?

Valew! Abraços.
Em resposta à André Casimiro

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
1º caso: Você tem uma struct (que eu chamarei de blá) e quer pegar um certo setor dela.
blá.setor retorna necessariamente o dado neste setor.

2º caso: Você tem um ponteiro de struct (que eu chamarei junop) e, muito provavelmente, uma struct - blá - para onde ele aponta.
(Atente para o ponteiro!) *junop.setor é igual a junop->setor que por sua vez retornará o setor referente à struct que você apontou. Logo:
*junop.setor = junop->setor = blá.setor
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Lucas Guimarães Gassert -
Em resposta à Lucas Guimarães Gassert

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Simionato Solferini -
Eu perco nota pelo fato do meu EP ser bem ineficiente ?
(percebi isso só agora e já apanhei bastante dele, qm tava na linux hoje me ouviu surtando = /)
Ele faz 4 comparações(ou mais) ao inves de 1 (espero q dê tempo para arrumar amanhã)

Will, eu to triste pq vc falou q eu naum devia ter passado em mac110 =/
Lucas, vamo no seu quarto jogar SPORE?
Aproveitando...
Qual o melhor linux para usar no meu P4 antigo?
Em resposta à Felipe Simionato Solferini

Re: EP 1 - Como que esse programa irá rodar? :o

por Gregory De Bonis -
Solfer, Paca não é MSN... Não se chama as pessoas pra ir pro quarto por aqui, o que vão pensar de você?
Se não me engano, foi dito que nesse EP o que vale é funcionar... Eficiência ainda não será cobrada.
E sobre o Linux (aha, sabia que você viria para o lado da luz!) eu vi bastante gente falando que o Ubuntu é bem legal. =]

Em resposta à Gregory De Bonis

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Simionato Solferini -
AeeeeeeE!!! Eu consertei meu programa!!
Apesar do horario, eu acho q eu ainda vou ter q sacrificar a aula de algelin pra salvar o mundo =P
Greg! Vc eh mto meigo!!
Hey!! Linux eh lado negro,ele eh comunista, contra o sistema!
^^

Voce eh mto gentil!! = )
Em resposta à Felipe Simionato Solferini

Re: EP 1 - Como que esse programa irá rodar? :o

por Almir Alves Pereira -

o meu ep tah rodando três (ou até quatro!) vezes mais rapido q o wc em algumas situações (quebra Solfer!)

se vc naum gosta d Linux naum deveria estudar no IME, seu capitalista! O Linux eh mto + eficiente q o Ruindows(c)

Em resposta à Felipe Simionato Solferini

Re: EP 1 - Como que esse programa irá rodar? :o

por Gregory De Bonis -

"Meigo"? Bem, se você diz...


<nerd>

Parece que você não conhece Star Wars!

Teorema
Dado qualquer filme bom da série Star Wars (ou seja, pertencente ao intervalo [IV, VI]), existe uma única função, denominada SW(x), que liga cada elemento do nosso mundo a seu correspondente na saga. Então, SW(Sistema) = Império e SW(Comunismo) = Aliança Rebelde. A demonstração deste teorema fica como exercício para o leitor.
Corolário

SW(Bill Gates) = Darth Vader.

</nerd>


Então, seu ep funcionou?

Tenho uma dúvida: Precisamos aceitar, assim como no wc, as opções (por exemplo) "--w", "--wo", "--wor", "--word" e "--words" ou só a que consta no help?

Afinal, o método é o mesmo, só precisa da mais alguns ifs chatos...

Em resposta à Gregory De Bonis

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Simionato Solferini -
O Darth Vader eh bonzinho!!
Ele foi obrigado a se fingir de mal pra poder matar os comunistas!!


Eu gosto do Bill Gates!!
Eu gosto do Windows!!
Eu gosto de poder jogar jogos com graficos bons (não akele pinguim tosco metido a mário)
E gosto de rodar meus aplicativos de Windows sem precisar usar tecnicas nojentas e q dão pau =P

E Viva o Capitalismo!!! ^^


(Na verdade qm me conhece bem sabe q eu sou comunista ideologico reprimido! Eu acho os ideais muito bons, mas ele é falho, porque o ser humano é um bicho estranho, semelhante ao bicho de laranja)
Em resposta à Felipe Simionato Solferini

Re: EP 1 - Como que esse programa irá rodar? :o

por Gregory De Bonis -

Eu gosto de poder jogar jogos com graficos bons (não akele pinguim tosco metido a mário)

http://en.wikipedia.org/wiki/Linux_gaming, e Mario não tem acento.


E gosto de rodar meus aplicativos de Windows sem precisar usar tecnicas nojentas e q dão pau =P

Aplicativos de Windows são nojentos e dão pau por natureza.

E o que vem a ser um bicho de laranja? É aquilo que tomamos no bandejão da física?
Em resposta à Gregory De Bonis

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Simionato Solferini -
O bicho de laranja eh o lenu!!
Esqueci de acrescentar uma coisa!
Eu gosto de jogar jogos BONS com graficos bons!!
AUHuhauhAUHuAHuhA =P

Eu sou até a favor de software livre, uma idéia bem bacana!!
Mas eu não quero que meu pai me sustente pra sempre! = /
E tb não quero viver de doações de algum Sheik (zelda =P) ou coisas assim!!

E é isso!!
Viva o capetalismo!! =P
Em resposta à Felipe Simionato Solferini

Re: EP 1 - Como que esse programa irá rodar? :o

por Gregory De Bonis -
Unreal Tournament, Doom e Neverwinter Nights são jogos ruins?


Eu sou até a favor de software livre, uma idéia bem bacana!!
Mas eu não quero que meu pai me sustente pra sempre! = /

Acho que não entendi. =(
(E vamos parar de spammear no Paca?)
Em resposta à Gregory De Bonis

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Simionato Solferini -
Spammear o paca?
Logico q a gente naum tah fazendo isso (tah sim)
Mas é um pseudoflood com conteudo.
Eh verdade!
Ateh q saum bons sim!
Mas vc tem q concordar q o windows tem uns jogos beeeeeeeeeeem mais legais q esse.
Tipo um mod de Postal com comunistas (não tem eu axo, mas a gente podia fazer =P)

E meu ep não reconhece varias entradas padrões e eu axo q naum to dando fclose no stdin =P
Em resposta à Felipe Simionato Solferini

Re: EP 1 - Como que esse programa irá rodar? :o

por Almir Alves Pereira -
um gamer de verdade gosta de jogos bons com graficos ruins! ex: Phantasy Star 2 (mega drive), Dark Lord (NES) e Hexen (PC)
Em resposta à Almir Alves Pereira

Re: EP 1 - Como que esse programa irá rodar? :o

por William Gnann -
Hey! Phantasy Star é lindo!
Em resposta à William Gnann

Re: EP 1 - Como que esse programa irá rodar? :o

por Almir Alves Pereira -

Will! Vc tbm ja fez final no Phantasy Star 2? (eu quase enlouqueci tentando)

Phantasy Star 4 é lindo, Phantasy Star 2 é meio tosco sim! (monstros bizarros!)

mudei de ideia sobre dark lord, considerando as limitações de hardware e a epoca, os graficos são incriveis!

Em resposta à Almir Alves Pereira

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Simionato Solferini -
Hey! Eu acho que um gamer de verdade gosta de jogos bons.
Eu gosto de jogos bons com graficos bons(ou jogos excelentes, com graficos mais ou menos).
Outra coisa! Hexen tem graficos mto bons (na epoca eu lembro que era "perfeito", eu axo q ainda devo ter o cd por ai =P)
Assim como pokemon Red & Blue eram perfeitos pra epoca deles.
Mas sei lá. Hoje eu fui durmir as 3:30 e minha mãe me ligou as 6 pra perguntar que livro de algelin eu qria. (me deixou triste duas vezes :<)
Qm vai tirar o feriado pra estudar?

Em resposta à Felipe Simionato Solferini

Re: EP 1 - Como que esse programa irá rodar? :o

por Gregory De Bonis -
Eu gosto de pensar que vou estudar a semana toda, mas já é quarta e ainda não peguei um livro... Que tal estudarmos Álgebra Wiinear na sua casa? :D
E Pokémon Blue É perfeito!
Em resposta à Felipe Simionato Solferini

Re: EP 1 - Como que esse programa irá rodar? :o

por Geraldo Alexandre Alves do Carmo -

Neste negócio de programar não tem isto de gostar de sistema operacional isto, de linguagem aquela ou de máquina aquela outra, o que tiver a mão e for entendido (muitas vezes nem isto) é o que a gente usa. Logicamente, se o cabeçudo que quiser usar um programa porcaria que dá mais pau do que roda, a nossa tarefa é fazer o programa dar mais pau ainda e fazer o teimoso desistir de usar a tranqueira. E botar a culpa nela para não perder o emprego, afinal de contas o conhecimento do usuário é limitado e ele nem sabe o que está se passando no sistema. Eu digo as vezes que o Windows trata o usuário que nem uma criança de 6 anos e o Linux trata melhor, trata que nem uma de 12, mas vai trabalhar com eles para vocês verem o que é bom para ficar velho rapidinho. E tenha sempre a mão uns comprimidos para dor de cabeça, pois o usuário é uma criança mimada, maldosa, mal educada e idiota demais.

Em resposta à Tobias Sena

Re: EP 1 - Como que esse programa irá rodar? :o

por Thiago Costa -
Tava testando uns arquivos aleatorios e achei algo estranho. Quando eu testei
wc texto, onde texto era:

ÇÇÇÇç(\n)
a][(\n)
das(EOF)

o wc retornou 3 2 19. Mas tem 3 palavras o texto. Quando testei com

ÇÇÇÇça(\n)
][(\n)
das(EOF)


o wc retornou 3 3 19 normalmente. Eu lembro que ao salvar, o gedit nao conseguiu salvar como ansi, mas como UTF-8. Parece que caracteres especiais nao contaram como parte de uma palavra. Os computadores da rede linux estao em ingles por padrao, acho que isso afeta tambem.
Em resposta à Thiago Costa

Re: EP 1 - Como que esse programa irá rodar? :o

por Felipe Simionato Solferini -
O wc eh uma coisa estranha e bugada, ou entaum eh uma coisa mto inteligente demais para o pobre cerebro humano(eu axo q ele eh bugado, pq eu sei oq eh uma palavra =P)