Pos de la ligne la plus longue 3

Fermé
kiki - 5 juil. 2011 à 12:30
mamiemando Messages postés 33381 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 26 novembre 2024 - 5 juil. 2011 à 13:07
Bonjour,
j'ais pus corriger mes erreur et le prog devient sous cette forme
#!/usr/bin/awk
BEGIN {
long=-1
lign=0
}
{
while(lign<NR){
lign =lign+1
FNR =lign
l1=length($0)
FNR =lign+1
l2=length($0)
if(l1 > l2){
long = l1
lign=lign}
else{
long=l2
lign=FNR
} }
}
END {
print long,lign;
}
OR voici mon fichier
kiki
iki
jujuh
ET en executant le programme sur ce fichier il s'affiche
5 2
pourqoi
merci





A voir également:

1 réponse

mamiemando Messages postés 33381 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 26 novembre 2024 7 802
5 juil. 2011 à 13:07
Peux-tu poursuivre dans le fil de discussion initial ?
https://forums.commentcamarche.net/forum/affich-22548958-pos-de-la-ligne-la-plus-longue#p22549097

(clique sur le bouton "j'ai une réponse" pour poursuivre).

Mais d'ores et déjà tu t'es à mon avis bien compliqué la vie.

Tu n'as pas de boucle while à écrire. Le bloc :

{
  ...
}


... est exécuté à chaque lecture de ligne. Cela signifie que si ton fichier à 100 lignes, tu passeras 100 fois dans ce bloc. Il faut simplement que tu codes le comportement à chaque fois qu'une ligne est lue...

Ainsi le pseudo code serait plutôt :

{
  // Si la ligne que je lis est plus longue que celle que j'ai mémoriser
  // -> enregistrer le nouveau numéro de ligne
  // -> corriger la longueur de la ligne la plus longue
}


Du coup... tu as juste trois lignes à écrire !

Autre conseille, attention à l'indentation :
- passe à la ligne derrière une { et derrière une }
- quand tu ouvres une accolade, augmente ta "marge" d'une tabulation
- quand tu fermes une accolade, diminue ta "marge" d'une tabulation

Ceci rendra ton code bien plus lisible. Je t'invite aussi à utiliser les balises de code (voir bouton <> au dessus de la boîte dans laquelle tu saisis le texte de ton message).

Ainsi ton code ressemblera à ceci :

BEGIN {
  ligne = -1;
  longueur = -1;
}

{
  if(...){
    ...
  }
}

END{
  print ligne, longueur;
}


Bonne chance
0