Pour
Aujourd'hui, 19h34
disedorgue
Je travail avec des chiffres à 3 décimales, le dilemme ne se posera pas. Ici j'ai simplifié le problème pour ne pas faire trop lourd....
Version imprimable
Pour
Aujourd'hui, 19h34
disedorgue
Je travail avec des chiffres à 3 décimales, le dilemme ne se posera pas. Ici j'ai simplifié le problème pour ne pas faire trop lourd....
Ah !:twisted:Code:
1
2
3
4 $ printf -v XX '%.2f%s' 8 + 6 + 6,2 + 12 + 0,8 $ printf -v YY '%.2f%s' 5 $ printf %.10f\\n "$((10**9 * (${XX//,/})/${YY//,/}))e-9" bash: 10**9 * (800+600+620+1200+080 : valeur trop grande pour la base (le symbole erroné est «*080*»)
Euh !
:mrgreen:Code:
1
2
3
4 $ printf -v XX '10#%.2f%s' 8 + 6 + 6.2 + 12 + 0.8 $ printf -v YY '10#%.2f%s' 5 $ printf %.10f\\n "$((10**9 * (${XX//./})/${YY//./}))e-9" 6.6000000000
c'est une astuce qu'il est bon de connaître (bc n'est pas toujours installer par défaut), mais c'est un peu tortueux.
et il n'est pas possible d'en faire une fonction qui accepterait tous les paramètres de calculs variés.
:ccool:
Perso, pour moi, c'est juste pour le fun, car si une prod refuse d'installer une commande comme bc, bah, qu'elle se débrouille toute seule...
PS: quelqu'un se lance pour la version built-in, c'est un bon exercice de vacances (pour les débutant :aie:) ?
Oula oula, le sujet était tout autre '-_-
On attend toujours votre code, cher ami.
Il faudrait faire un test de comparaison.
Code:
1
2
3
4
5
6
7
8 awk '/#|^ *$/{next;} {v[$1]+=$2;n[$1]++;} END{for (i in n) print i,v[i]*1.0/n[i];}' groupe.txt > means_of_groupe.txt # Je me retrouve avec deux fichiers. #colone contenant les valeur a comparer awk '{print $2} ' groupe.txt > temp1.txt awk '{print $2} ' means_of_groupe.txt > temp2.txt
Je ne vois pas du tout comment faire la comparaison si ce n'est qu'en grand des listes de fichiers temporaires :(
Mouais, c'est un peu ce qu'on dit tous depuis le départ...
Ah ben c'est sûr, si tu dumpes chaque étape dans un fichier intermédiaire, tu te retrouveras à la fin avec autant de fichiers que d'étapes :? Tu ne connais pas les variables ? Et les tableaux ?? Et les pipes ??? Et le moyen de récupérer le résultat des commandes ???? Plus simplement: tu connais quoi en shell ?
Relis mon premier post. C'est pas compliqué mais... https://vimeo.com/manage/videos/733951159...
C'est tout à fait cela je risque de passer de fichiers temporaires en fichiers temporaires. J'ai pas de connaissance poussé c'est vrai désolé '-_- . C'est pour cela que je pose ma question ici
Oui mais enfin, il y a des limites et généralement ces limites (basses ici) correspondent aux limites hautes données par les tutos.
Parce que là, il n'y a que 3 solutions
- on te fait le code
- on te dit quoi faire étape par étape, avec à chaque fois la ligne de code correspondant (ok on fait le code donc)
- on te dit de prendre un tuto shell et le lire. C'est d'ailleurs écrit dans les règles
Sinon rien n'interdit de passer par des fichiers temporaires. Si ça te convient et que ça fonctionne...
Passer par des fichiers temporaires cela fait très redondant, mais si tu as des fonctions à me conseiller pour ce cas, j'irai voir sur Google :)
Je confirme !!!
RésultatCode:
1
2
3 while read ligne; do echo "$ligne" done <temp2.txt
Code:
1
2 2 4,75 1 7,9
RésultatCode:
1
2
3 while read ligne; do echo "$ligne" done < <(cut -f2 -d' ' means_of_groupe.txt
Ce n'est pas "pour ce cas" mais "pour tous les cas" !!! Tout langage de programmation se veut général. Comment lire des lignes, extraire une info de la ligne.Code:
1
2 2 4,75 1 7,9
Lire un fichier ligne par ligne
Code:
1
2
3 while read ligne; do ... (traitement $ligne)... done <fichier
Cela permet de comprendre cette instruction similaire mais qui lira une "commande" au lieu de lire un fichier
(l'espace entre "< <" est important)Code:
1
2
3 while read ligne; do ... (traitement $ligne)... done < <(commande)
Récupérer une info X au milieu d'une string: infoX="$(echo "string" |cut ...)" (évidemment ça implique que la string est foutue de façon à pouvoir facilement repérer l'infoX)
Le reste ce n'est plus ensuite que stocker et comparer.
Et pour les moteur de recherche (pas de nom=pas de pub), la recherche que tu dois taper c'est "tutoriel shell débutant".
Merci je vais décortiquer tout cela...
Pour moi, read et cut pour un usage de champs, c'est déjà redondant surtout ici, ou le fichier de base est constituer de 3 champs, read c1 c2 c3 par exemple fait largement l'affaire.
upCitation:
moyenne=5
orange=4
prune=4
citron=6
On choisit quoi ????
Prière de répondre.
Au final, tu ne codes rien de peur de faire du sale ? :mouarf: On apprend en codant (pas recopiant) et faire des erreurs fait partie du processus normal.
Tu as maintenant la moyenne par groupe, à toi de coder (même maladroitement), on est ici pour t'aider justement à faire plus propre (mais plus propre que "rien", c'est difficile :weird:).
Au départ
Maintenant que tu as la moyenne:Code:
1
2
3
4
5
6 #Groupe - Valeur - Fruit 1 20 Orange 1 10 Banane 2 100 Pomme 2 10 Banane
Il devient "facile" de calculer la distance entre la "valeur" et la moyenne :Code:
1
2
3
4
5
6 #Groupe - Valeur - Fruit - moyenne_groupe 1 20 Orange 18 1 10 Banane 18 2 110 Pomme 40 2 10 Banane 40
Cool, la plus petite "distance" gagneCode:
1
2
3
4
5
6 #Groupe - Valeur - Fruit - moyenne_groupe - distance 1 20 Orange 18 20-18 2 1 10 Banane 18 18-10 8 2 110 Pomme 40 110-40 70 2 10 Banane 40 40-10 30
Sauriez-vous comment extraire le nom du fruit, qui se trouve le plus proche de la moyenne (colonne 2) pour son groupe (colonne 1) ?