Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1076 Le 24/10/2011, à 12:37

Rolinh

Re : /* Topic des codeurs [6] */

grim7reaper a écrit :

Je ne sais pas si ça te parle…

Si ça correspond +/- aux 2 premières années d'une licence, ça me donne une idée wink

Oui, c'était tendu et faut croire que ça nous a marqué car c'est la 2e fois que l'on revient dessus en parlant comme ça big_smile

Hors ligne

#1077 Le 24/10/2011, à 12:41

grim7reaper

Re : /* Topic des codeurs [6] */

Ouais big_smile

Bah pour être là depuis l’origine de ce topic, jpense pas me tromper en disant que ce fut l’un des plus gros débats du topic des codeurs (et puis il est à cheval sur deux topic, donc on s’en rappelle d’autant plus ^^).

Hors ligne

#1078 Le 24/10/2011, à 12:46

tshirtman

Re : /* Topic des codeurs [6] */

Je sais que quand je discutais avec un pote en licence physique/info, il était étonné de tout ce qu'on avait fait, apparement on touchait beaucoup plus de trucs, sans doute moins de théorie et de maths par contre. Moi je faisais DUT info industrielle (à valence).

Hors ligne

#1079 Le 24/10/2011, à 12:51

grim7reaper

Re : /* Topic des codeurs [6] */

Oui, c’est juste une équivalence au niveau du niveau (:D) d’études.
Le contenu du programme est assez différent (helly a fait une licence il me semble, donc il pourra facilement comparer avec Вiɑise qui fait un DUT).

Ayant fait un DUT de bio, je m’abstiendrais de toutes comparaisons entre licence info et DUT info :]

Hors ligne

#1080 Le 24/10/2011, à 12:56

helly

Re : /* Topic des codeurs [6] */

Yep, j’fais une licence.

Avec normalement pour but d’arriver jusqu’au post-doc >_<’.


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#1081 Le 24/10/2011, à 13:00

sweetly

Re : /* Topic des codeurs [6] */

helly a écrit :

Yep, j’fais une licence.

Avec normalement pour but d’arriver jusqu’au post-doc >_<’.

Tu peux t'arrêter au doctorat et choper un poste de chargé de recherche ou de maître de conf' direct, ça économisera ton temps et ton argent.

Hors ligne

#1082 Le 24/10/2011, à 13:00

Rolinh

Re : /* Topic des codeurs [6] */

Bon, j'ai fait procédé à des fouilles archéologiques. tongue
J'ai débarqué sur le topic des codeurs ici suite à un débat sur la Turing-complétude du brainfuck initié ici. Le fameux débat sur scanf a commencé 50 pages plus loin et on en avait reparlé ici avant d'y revenir aujourd'hui. big_smile

Pour ma part, je fais un bachelor (=licence mais standardisé selon les accords de Bologne que les hautes écoles françaises ont apparemment du mal à appliquer) scientifique en sciences informatiques en Suisse mais il existe plusieurs cursus pour étudier cette branche. Je ne sais pas vraiment à quoi c'est comparable en France.

Hors ligne

#1083 Le 24/10/2011, à 13:11

grim7reaper

Re : /* Topic des codeurs [6] */

Rolinh a écrit :

J'ai débarqué sur le topic des codeurs ici suite à un débat sur la Turing-complétude du brainfuck initié ici.

Effectivement, je m'en rappelle maintenant.

Rolinh a écrit :

Le fameux débat sur scanf a commencé 50 pages plus loin

Ouais mais t'avais changé de pseudo entre temps, c'est pour ça que j'étais tout confus :]
[mauvaise foi]Donc le débat sur scanf correspond bien à ton arrivé sur le topic (mais avec ton pseudo actuel), j'avais pas totalement tort tongue[/mauvaise foi]

Hors ligne

#1084 Le 24/10/2011, à 13:19

Pylades

Re : /* Topic des codeurs [6] */

grim7reaper a écrit :
helly a écrit :

SI ça avait été le c, j’aurai dû prendre Pylade, tu te rends compte ?

lol
Pas nécessairement, je touche plus en C qu’en C++.
Et puis c’est moi qui est plus ou moins formé Pylade sur le C (suffit de lire les premiers topics) donc t’aurais aussi pu m’avoir.

+1


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1085 Le 24/10/2011, à 13:20

tshirtman

Re : /* Topic des codeurs [6] */

@helly: je veux te voir avec ton diplôme! Lâche pas l'affaire! tu mérites d'aller jusque là et plus smile.

Hors ligne

#1086 Le 24/10/2011, à 13:25

Rolinh

Re : /* Topic des codeurs [6] */

@grim: quelle mauvaise foi quand même tongue

Hors ligne

#1087 Le 24/10/2011, à 20:38

Elzen

Re : /* Topic des codeurs [6] */

Salut les gens,

j'm'embêtais entre deux cours, alors j'ai fait ça :

#! /usr/bin/python
# coding: Utf-8

# Visualiseur d'images en console et en couleurs !

import os, sys, Image, gtk, glib

# Tableau-pixel : [ rouge, vert, bleu, transparence ]
# Couleurs shell : 30 Noir, 97 blanc, 91 rouge, 92 vert,
#     94 bleu, 96 cyan, 95 violet, 93 jaune.

# Lecture des dimensions du terminal.
try: columns = int(os.environ["COLUMNS"])
except KeyError: columns = 80
try: lines = int(os.environ["LINES"])-1
except KeyError: lines = 24

# Lecture des images une par une.
for i in range(1, len(sys.argv), 1):
    try: # Lecture de la taille de l'image.
        img = Image.open(sys.argv[i])
        width = min(columns, img.size[0])
        height = min(lines, img.size[1])
    except Exception: # Pas lisible ou format inconnu.
        width,height = columns,lines
    try: # Lecture des données de l'image elle-même.
        pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(
            sys.argv[i], width, height)
        # On adapte à une police plus haute que large.
        width = min(pixbuf.get_width()*5/3, width)
        pixbuf = pixbuf.scale_simple(width,
            pixbuf.get_height(), gtk.gdk.INTERP_BILINEAR)
        s = ""; # Chaîne contenant le résultat.
        # Parcours des pixels à afficher.
        for row in pixbuf.pixel_array:
            for pixel in row: # Bon, lisons ça.
                if (len(pixel) > 3 and pixel[3] < 128):
                    s += " " # Transparence, donc.
                elif (pixel[2] > 128):
                    if (pixel[1] > 128):
                        if (pixel[0] > 128):
                            s += "\033[97m▓\033[0m"
                        else: s += "\033[96m▓\033[0m"
                    elif (pixel[0] > 128):
                        s += "\033[95m▓\033[0m"
                    else: s += "\033[94m▓\033[0m"
                elif (pixel[1] > 128):
                    if (pixel[0] > 128):
                        s += "\033[93m▓\033[0m"
                    else: s += "\033[92m▓\033[0m"
                elif (pixel[0] > 128):
                    s += "\033[91m▓\033[0m"
                else: s += "\033[30m▓\033[0m"
            s += "\n" # Et la ligne suivante.
        print s[:-1] # Et voilà, terminé, c'est bon.
    except glib.GError: print sys.argv[i],"illisible."

J'n'avais pas d'autre doc que l'aide interne sous la main, donc j'ai fait vite et mal avec ce qui m'est venu spontanément à l'esprit, mais j'trouve quand même que le résultat n'est pas trop mal.

Niveau amélioration, déjà, le truc indispensable, ce serait de récupérer vraiment le nombre de lignes et de colonnes du terminal, parce qu'apparemment, $LINES et $COLUMNS ne sont pas dans os.environ, évidemment.

Il faudrait aussi virer complètement l'appel à PyGTK qui n'a strictement rien à foutre dans une appli en console, mais je ne connais pas encore assez la PIL pour savoir faire ça directement avec.

Si jamais quelqu'un a des suggestions d'amélioration, j'suis preneur, même si ça n'sert à rien ^^

Dernière modification par ArkSeth (Le 24/10/2011, à 20:39)

Hors ligne

#1088 Le 24/10/2011, à 20:41

Вiɑise

Re : /* Topic des codeurs [6] */

Wah les bavards ! big_smile

@ Rolinh : excuse, j'étais un peu endormie, on avait bien vu comment vider le buffer en cours mais c'était un truc qui marche pas sous linux (une des nombreuses fantaisies de notre enseignant) alors je l'avais pas noté. Comme j'ai galéré sur d'autres matières en début d'année j'ai laissé traîner le C et là je rattrape tout, et j'en suis vraiment au début. ^^

Vous auriez pas des idées de mini programmes à la con à me donner ? smile Le genre pas forcément utiles mais pour me faire bosser. En me donnant juste une phrase en français, genre je me démerde pour trouver comment faire ça en C, ce sera plus rigolo.

(bon j'avais dis que je révisais l'archi moi ce soir… Donc, Hamming, circuits logiques et 68000 me voilà…)

(et bien entendu chercher Motorola 68000 sur wikipedia en début de soirée n'était PAS une bonne idée, j'ai navigué de lien en lien en m'égarant complètement >_<)

Hors ligne

#1089 Le 24/10/2011, à 20:55

The Uploader

Re : /* Topic des codeurs [6] */

motorola 68x ? Bah y'en a eu dans l'Amiga, les Atari, la Megadrive, les vieux Macintosh...

La belle époque! *snif*


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1090 Le 24/10/2011, à 21:53

Rolinh

Re : /* Topic des codeurs [6] */

@Вiɑise: j'en ai tout plein des exercices si tu veux wink
Alors on va commencer par un tout simple:
"Écris un petit programme qui affiche le produit de 2 nombres entiers entrés en tant que paramètres du programme."
Exemple d'utilisation:

./main 15 23
=> 345

Conseil: fais attention à ce que l'utilisateur peut rentrer et à la taille de ce que tu multiplies.
Je pense que ça devrait être super vite fait alors j'en ai plein d'autres au cas où wink

PS: il a du remplacer un poste vacant sur le tard pour dire des inepties pareilles ton prof? Sinon faudrait vraiment qu'il songe à enseigner quelque chose qu'il maîtrise...

Dernière modification par Rolinh (Le 24/10/2011, à 21:55)

Hors ligne

#1091 Le 24/10/2011, à 22:19

Вiɑise

Re : /* Topic des codeurs [6] */

Il est juste windowsien, et les libristes de la promo sont effarés de voir avec quelle application il trouve moyen de faire du code pas portable !

Bon ton exercice !
Alors en faisant comme jusqu'à maintenant avec le scanf maudit, je fais ça :

#include <stdio.h>

int main (void) //heureux ? :P

{
    int a=0;
    int b=0;
    int p=0;
    
    printf("Entrez un nombre entier : ");
    scanf("%d",&a);
    getchar ();
    
    printf("Entrez un autre nombre entier : ");
    scanf("%d",&b);
    getchar ();
    
    p=a*b;
    
    printf("Le produit de ces deux nombres entiers est : %d\n",p);
    
    return 0;
    
}   

Donc en effet tant que j'entre bien des entiers ça marche gentilement :

biaise@Tonton:~/Documents/programmes/Exos du tdcct$ ./exo1 
Entrez un nombre entier : 543
Entrez un autre nombre entier : 44
Le produit de ces deux nombres entiers est : 23892

Mais si j'essaie de mettre un float tongue

biaise@Tonton:~/Documents/programmes/Exos du tdcct$ ./exo1 
Entrez un nombre entier : 2.5
Entrez un autre nombre entier : Le produit de ces deux nombres entiers est : 10
biaise@Tonton:~/Documents/programmes/Exos du tdcct$ 

Voilà, il m'a fait 2 * 5 quoi. mais… comment /D Je m'attendais à ce qu'il prenne pas en compte ce qu'il y a après le point car le int, il sait pas ce que c'est qu'un point normalement…

Bon là je réfléchouille à comment faire pour qu'à la fin, il me propose soit de quitter, soit de faire une nouvelle multiplication.

Hors ligne

#1092 Le 24/10/2011, à 22:31

Rolinh

Re : /* Topic des codeurs [6] */

Là où mon exercice était intéressant, c'est qu'il nécessitait de ne pas avoir int main(void) wink
Regarde bien mon exemple d'utilisation: tu n'as pas besoin de scanf ou autre. wink
Et ne t'inquiètes pas pour les flottants, j'ai bien précisé que les nombres entrés étaient des entiers.

Hors ligne

#1094 Le 24/10/2011, à 22:36

Вiɑise

Re : /* Topic des codeurs [6] */

Bah justement rolhin je me demande comment tu as fais ton compte /D

Sinon entre temps j'ai fais ça  :

#include <stdio.h>

int main (void) //heureux ? :P

{
    int a=0;
    int b=0;
    int p=0;
    char choix;
    
    do {
    
        printf("Entrez un nombre entier : ");
        scanf("%d",&a);
        getchar ();
    
        printf("Entrez un autre nombre entier : ");
        scanf("%d",&b);
        getchar ();
    
        p=a*b;
    
        printf("Le produit de ces deux nombres entiers est : %d\n",p);
        
        printf("Tapez S pour sortir du programme, n'importe quelle touche pour continuer : ");
        scanf("%c",&choix);
        
        }
    while (choix!='S'||'s');
        
    
    return 0;
    
}   

Mais marchepô… quel que soit le caractère que je lui donne il me fait continuer le programme…

Bon en attendant jvais essayer de faire comme dans ton exemple…


edit: heu nan, je vois vraiment pas comment faire ça o_O

re edit : en fait, tu utilises quoi, là, pour prendre en compte les valeurs entrées par l'utilisateur ?

Dernière modification par Вiɑise (Le 24/10/2011, à 22:47)

Hors ligne

#1095 Le 24/10/2011, à 22:53

Elzen

Re : /* Topic des codeurs [6] */

@Вiɑise : bah la récupération/conversion d'arguments, c'est peut-être un peu hors de tes compétences si tu débutes.

En gros, l'autre protocole pour main, c'est

int main(int argc, char** argv);

dans lequel argc contient le nombre de paramètres et argv les paramètres eux-mêmes.

argv est un pointeur sur chaîne de caractère, chaque chaîne de caractère en C étant elle-même un pointeur sur caractère. Pour faire simple, dans ce cas précis, tu peux manipuler ça comme un tableau dans d'autres langages, donc argv[0], argv[1], etc. (bien sûr, il ne faut pas dépasser argc, sinon bobo).

Une fois que tu as récupéré le char* qui t'intéresse, tu peux utiliser des fonction prédéfinies (atoi ou strtol dans la stdlib, consulte ton man wink) pour les convertir en entier, et ensuite leur faire les opérations que tu veux.

C'est une explication très grossière, mais comme je n'sais pas exactement où t'en es, je laisse grim se charger de donner plus de détails et de corriger mes approximations ^^

tshirtman a écrit :

http://en.wikipedia.org/wiki/John_McCar … ientist%29

;( deux lourdes pertes ce mois ci...

Ouais, en effet… hmm

Hors ligne

#1096 Le 24/10/2011, à 22:57

Вiɑise

Re : /* Topic des codeurs [6] */

ArkSeth a écrit :

@Вiɑise : bah la récupération/conversion d'arguments, c'est peut-être un peu hors de tes compétences si tu débutes.

En gros, l'autre protocole pour main, c'est

int main(int argc, char** argv);

dans lequel argc contient le nombre de paramètres et argv les paramètres eux-mêmes.

argv est un pointeur sur chaîne de caractère, chaque chaîne de caractère en C étant elle-même un pointeur sur caractère. Pour faire simple, dans ce cas précis, tu peux manipuler ça comme un tableau dans d'autres langages, donc argv[0], argv[1], etc. (bien sûr, il ne faut pas dépasser argc, sinon bobo).

Une fois que tu as récupéré le char* qui t'intéresse, tu peux utiliser des fonction prédéfinies (atoi ou strtol dans la stdlib, consulte ton man wink) pour les convertir en entier, et ensuite leur faire les opérations que tu veux.

        .---.
       /o   o\
    __(=  "  =)__
     //\'-=-'/\\
        )   (_
       /      `"=-._       WHAT THE PHOQUE ?!
      /       \     ``"=.
     /  /   \  \         `=..--.
 ___/  /     \  \___      _,  , `\
`-----' `""""`'-----``"""`  \  \_/
                             `-`

Hors ligne

#1097 Le 24/10/2011, à 23:13

Elzen

Re : /* Topic des codeurs [6] */

Bon, j'ai pas du être aussi débutant-proof que ce que je pensais, dans ce cas je dirais que t'as pas pas forcément encore le bon niveau pour ça.

Alors, je réessaye : entre les parenthèses du main (ou de n'importe quelle autre fonction), tu peux mettre des arguments, qui seront à passer à ta fonction. En l'occurrence, quand main() est appelée depuis l'extérieur, elle peut recevoir deux arguments : argc, de type int, et argv, de type char** (les noms sont purement conventionnels, tu peux les renommer si tu veux).

Le type char**, c'est un pointeur. Précisément un pointeur sur pointeur sur caractères. C'est un truc un peu complexe, mais tu n'as pas encore besoin d'en savoir des tonnes dessus pour le moment : tout ce qu'il te faut pour le truc de Rolinh, c'est d'accéder aux différents arguments eux-mêmes, qui sont, en C, représentés par des char*.

Pour ça, tu peux accéder au contenu en utilisant la syntaxe « variable[indice] », où indice peut être soit un nombre, soit une variable. Ça te permet donc de passer tes paramètres à une fonction qui te les convertira en entiers, pour que tu puisse faire des traitement numériques dessus.

Je suis plus clair ?



Pour ton problème, je n'ai regardé qu'en vitesse parce qu'il faut que je file, mais je dirais qu'il y a un soucis au niveau de tes appels à getchar(). Cette fonction lit un caractère sur l'entrée standard, et le renvoie en tant qu'entier (en C, entier et caractère, ça revient à peu près au même), donc quand tu l'utilises, tu es censée récupérer sa valeur de retour dans une variable.

Pour arrêter le programme, plutôt qu'un « scanf("%c",&choix); », je tenterais avec un « choix = getchar(); ».

Hors ligne

#1098 Le 24/10/2011, à 23:15

Вiɑise

Re : /* Topic des codeurs [6] */

faudra que je comprenne comment fonctionne getchar un jour décidément…

En attendant, jvais réviser, à demain o/

Hors ligne

#1100 Le 25/10/2011, à 00:33

cm-t

Re : /* Topic des codeurs [6] */

bon, bah un projet pour 3 personnes, 3 semaines, XML, php, feuille de project
me reste 6 jours

ah, et faut aussi un client java…

ressource: 4 nuit blanches, solo…
RIP-t


Actu Ubuntu            ☺/
Pauses Ubuntu sur Paris            \_< -t
[(π)] La Quadrature du net

Hors ligne