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

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

by Tobias Sena -
Number of replies: 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 thoughtful
In reply to Tobias Sena

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

by 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.

In reply to Alberto Bueno Junior

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

by 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.
In reply to Arnaldo Mandel

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

by Tobias Sena -
In reply to Tobias Sena

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

by 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 =/)
In reply to Felipe Simionato Solferini

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

by 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?
In reply to Pedro Faria

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

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

É esperar pra melhorar. Vai tentando enquanto isso... =/
In reply to Paulo Cheadi Haddad Filho

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

by 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.
In reply to Felipe Simionato Solferini

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

by Felipe Simionato Solferini -
alguem entendeu o q tem q fazer no EP? ou fui soh eu q naum??
In reply to Felipe Simionato Solferini

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

by 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)

In reply to Atol Fortin de Oliveira

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

by Felipe Simionato Solferini -
Deus te abençoe meu filho!
Valeu msm!!
Salvou a minha vida!!
= )
Jah ia começar mal em 122 =/
In reply to Tobias Sena

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

by William Gnann -
Há algum padrão de nomenclatura ou qualquer norma que eu deva seguir no desenvolvimento do EP?
In reply to William Gnann

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

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

In reply to Atol Fortin de Oliveira

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

by 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) ?
In reply to Pedro Faria

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

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

Abraço!
In reply to Tobias Sena

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

by William Gnann -
Eu posso roubar e usar o fato de a calloc preencher um vetor com zeros a meu favor?
In reply to William Gnann

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

by William Gnann -
Ah sim, que bibliotecas eu posso usar? E quais funções eu posso usar?
In reply to William Gnann

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

by 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.
In reply to Atol Fortin de Oliveira

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

by William Gnann -
Eu usei a string.h para tratar as opções...
In reply to William Gnann

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

by Atol Fortin de Oliveira -
In reply to Atol Fortin de Oliveira

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

by William Gnann -
O help necessariamente deve ser daquela forma (incluindo a função não implementada do '--files0-from-=F')?
In reply to William Gnann

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

by Arnaldo Mandel -
Acho que você não olhou o enunciado direito.
In reply to Atol Fortin de Oliveira

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

by 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.
In reply to Tobias Sena

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

by 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?
In reply to William Gnann

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

by 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!
In reply to Arnaldo Mandel

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

by 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...
In reply to William Gnann

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

by Joyce Alessandra Saul -
Parece que o wc -L considera o espaço ocupado pelo tab '\t' como múltiplos de 8.
In reply to Tobias Sena

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

by 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?
In reply to Nicoli G

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

by 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)
In reply to Nicoli G

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

by 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?
In reply to Nicoli G

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

by 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...
In reply to Atol Fortin de Oliveira

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

by 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?
In reply to Nicoli G

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

by 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).
In reply to Atol Fortin de Oliveira

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

by 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)
In reply to Atol Fortin de Oliveira

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

by 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.

In reply to Nicoli G

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

by 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
In reply to Nicoli G

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

by Atol Fortin de Oliveira -
tem outra possibilidade.... talvez vc esteja dando um:
fopen (argumento[0] , "r")
e o argumento ZERO eh o seu executavel.
In reply to Atol Fortin de Oliveira

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

by Nicoli G -
Agora sim!
Valeu!
In reply to Tobias Sena

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

by 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?
In reply to Tobias Sena

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

by 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). 

In reply to Pedro Faria

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

by 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?

In reply to Pedro Faria

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

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

E é necessariamente a 'fileno'.
In reply to Pedro Faria

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

by 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

In reply to Pedro Faria

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

by 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.
In reply to William Gnann

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

by 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)
In reply to William Gnann

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

by 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'.
In reply to Tobias Sena

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

by 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
In reply to Geraldo Castro Zampoli

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

by 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'
In reply to Geraldo Castro Zampoli

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

by 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?
In reply to Nicoli G

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

by William Gnann -
Retorna o total de todos os argumentos que você passou. Atente para a "linha máxima"...
In reply to William Gnann

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

by 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*
In reply to Nicoli G

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

by 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.
In reply to Tobias Sena

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

by 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
In reply to André Casimiro

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

by 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.
In reply to Tobias Sena

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

by 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...)
In reply to William Gnann

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

by Arnaldo Mandel -
A documentação do wc diz precisamente a ordem dos números.

In reply to Tobias Sena

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

by William Gnann -
Pode usar 'goto' ?
In reply to William Gnann

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

by Everton Topan da Silva -
Pelo (pouco) q eu sei acho q não pode usar o goto não
In reply to Everton Topan da Silva

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

by William Gnann -
Hahaha, mas é estranho esse preconceito. Se fosse tão feio assim, o comando teria deixado de existir. =P
In reply to William Gnann

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

by 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.
In reply to Gregory De Bonis

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

by 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' ?
In reply to William Gnann

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

by 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...
In reply to Atol Fortin de Oliveira

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

by 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.
In reply to William Gnann

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

by William Gnann -
Qual a definição de EP funcionando perfeitamente?
In reply to William Gnann

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

by Atol Fortin de Oliveira -
as funcionalidades que estao no enuciado.
In reply to Atol Fortin de Oliveira

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

by 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?
In reply to Atol Fortin de Oliveira

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

by Nicoli G -
Então, mesmo que eu não use as funções da forma mais eficiente possível, não haverá desconto?
In reply to Tobias Sena

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

by 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?
In reply to Francisco Zigmund Sokol

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

by 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.
In reply to Francisco Zigmund Sokol

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

by 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 -"
In reply to Tobias Sena

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

by 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
In reply to Geraldo Castro Zampoli

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

by 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.
In reply to Tobias Sena

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

by andre muto -
o wc conta como 2 chars uma letra acentuada? ou é só aqui? devemos implementar isso tbm?
In reply to andre muto

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

by 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...
In reply to William Gnann

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

by 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?

In reply to Felipe Simionato Solferini

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

by 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)
In reply to Everton Topan da Silva

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

by 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.
In reply to Ana Luiza Basalo

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

by 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
In reply to Everton Topan da Silva

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

by Everton Topan da Silva -
Nós devemos implementar esse esquema do ctr+d???
In reply to Everton Topan da Silva

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

by 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!
In reply to Lucas Guimarães Gassert

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

by William Gnann -
Aqui no Vista dá segfault.
In reply to Tobias Sena

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

by 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 sad)

In reply to Almir Alves Pereira

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

by 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é!


In reply to Marcos de Azevedo Iriarte

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

by 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...
In reply to Paulo Cheadi Haddad Filho

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

by 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...
In reply to Paulo Cheadi Haddad Filho

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

by 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. =)
In reply to Paulo Cheadi Haddad Filho

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

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

Até!
In reply to Almir Alves Pereira

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

by Atol Fortin de Oliveira -
os arquivos de teste e a compilacao do programa será feita em linux, nao se esqueça disso.
In reply to Atol Fortin de Oliveira

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

by William Gnann -
(Por isso que eu testo na rede linux E em casa) =P
In reply to Tobias Sena

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

by 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????
In reply to Everton Topan da Silva

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

by Everton Topan da Silva -
ja desisti de usar o gets
In reply to Everton Topan da Silva

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

by Felipe Torres -
tenta o getchar... ^^
talvez dê certo... =P
In reply to Felipe Torres

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

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

só não entendi o pq dele não me deixar usar o gets
In reply to Everton Topan da Silva

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

by 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.
In reply to Tobias Sena

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

by 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.
In reply to André Casimiro

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

by 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
In reply to William Gnann

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

by André Casimiro -
Entendi!
Resposta clara e elucidativa.
Valeuu!
In reply to William Gnann

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

by Lucas Guimarães Gassert -
In reply to Lucas Guimarães Gassert

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

by 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?
In reply to Felipe Simionato Solferini

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

by 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. =]

In reply to Gregory De Bonis

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

by 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!! = )
In reply to Felipe Simionato Solferini

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

by 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)

In reply to Felipe Simionato Solferini

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

by 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...

In reply to Gregory De Bonis

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

by 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)
In reply to Felipe Simionato Solferini

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

by 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?
In reply to Gregory De Bonis

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

by 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
In reply to Felipe Simionato Solferini

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

by 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?)
In reply to Gregory De Bonis

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

by 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
In reply to Felipe Simionato Solferini

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

by 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)
In reply to Almir Alves Pereira

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

by William Gnann -
Hey! Phantasy Star é lindo!
In reply to William Gnann

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

by 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!

In reply to Almir Alves Pereira

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

by Atol Fortin de Oliveira -
pessoal, tentem evitar esse tipo de conversa no PACA, ou no minimo, criem uma nova discussao.
In reply to Almir Alves Pereira

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

by 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?

In reply to Felipe Simionato Solferini

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

by 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!
In reply to Felipe Simionato Solferini

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

by 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.

In reply to Geraldo Alexandre Alves do Carmo

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

by William Gnann -
All hail MCP! =P
In reply to Tobias Sena

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

by 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.
In reply to Thiago Costa

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

by 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)