Pos de la ligne la plus longue 3
Fermé
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
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:
- Pos de la ligne la plus longue 3
- Partage de photos en ligne - Guide
- Aller à la ligne excel - Guide
- Ai suite 3 - Télécharger - Optimisation
- Mètre en ligne - Guide
- Picasa 3 - Télécharger - Albums photo
1 réponse
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 :
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 :
Bonne chance
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