Aller au contenu

iph

Membres
  • Compteur de contenus

    17
  • Inscription

  • Dernière visite

iph's Achievements

Junior Member

Junior Member (3/12)

0

Réputation sur la communauté

  1. Désolé je me suis laissé aller. Les boucles vont de 1 a n-1 car ce programme doit faire parti d'un autre. L'autre va afficher les valeurs dans un terminal avec les ncurses. Pour faire plus joli, il y aura un cadre. Donc la première ligne (i=0) et la premiere colonne (j=0) ainsi que les dernieres (n-1) ne sont pas prises en comptes. a pu de pos ^^ #include <stdio.h> #include <stdlib.h> typedef struct { int val; /* Contenu de la cellule */ int gen; /* Nombre de générations pendant lesquelles la cellule a eu sa valeur courante */ } cellule; typedef struct { cellule *tab; /* Tableau à 2 dimensions de cellules */ int largeur, hauteur; /* Dimensions du tableau de cellules */ } champ_t; int main() { int i, j; champ_t *ptr_champ = (champ_t*)malloc(sizeof(champ_t)); cellule *ptr_cell; cellule *adr_ptr_champ, *adr_ptr_cell; /* variables utilisees pour stocker les adresses des cellules */ ptr_champ->largeur = 10; ptr_champ->hauteur = 5; /* allocation de la place pour stocker les 10*5 cellules */ ptr_champ->tab = (cellule*)malloc(sizeof(cellule)*(ptr_champ->largeur)*(ptr_champ->hauteur)); ptr_cell = (cellule*)malloc(sizeof(cellule)*(ptr_champ->largeur)*(ptr_champ->hauteur)); /* allocation de la place pour stocker l adresse de chacune des deux premieres cellules */ adr_ptr_champ = (cellule*)malloc(sizeof(cellule*)); adr_ptr_cell = (cellule*)malloc(sizeof(cellule*)); printf("--- 1 eme etape : initialisation ---\n"); for(i = 1; i < (ptr_champ->largeur)-1; i++) { for(j = 1; j < (ptr_champ->hauteur)-1; j++) { /* insertion */ if (i < 5) ptr_champ->tab->val = 16; else ptr_champ->tab->val = 18; if((i == 1) && (j == 1)) { adr_ptr_champ = ptr_champ->tab; /* sauvegarde de l adresse de la premiere cellule du champ */ } ptr_champ->tab->gen = 17; printf("TEST- %d %d : %d - %p\n", i, j, ptr_champ->tab->val, ptr_champ->tab); (ptr_champ->tab)++; } } ptr_champ->tab = adr_ptr_champ; /* on refait pointer ptr_champ->tab vers la premiere cellule du champ modifiee */ printf("--- 2 eme etape : transfert des valeurs ---\n\n"); for(i = 1; i < (ptr_champ->largeur)-1; i++) { for(j = 1; j < (ptr_champ->hauteur)-1; j++) { /* recopie des valeurs de champ vers mes nouvelles cellules */ ptr_cell->val = ptr_champ->tab->val; /* on verifie que la valeur est copiee d une structure dans l autre et que * les adresses sont differentes * printf("TEST- %d %d : %d - %p\n", i, j, ptr_champ->tab->val, ptr_champ->tab); * printf("TEST- %d %d : %d - %p\n", i, j, ptr_cell->val, ptr_cell); */ if((i == 1) && (j == 1)) { adr_ptr_cell = ptr_cell; /* sauvegarde de l adresse de la premiere cellule du champ */ } (ptr_champ->tab)++; (ptr_cell)++; /* printf("TEST-- %d %d : %d - %p\n", i, j, ptr_champ->tab->val, ptr_champ->tab); printf("TEST-- %d %d : %d - %p\n", i, j, ptr_cell->val, ptr_cell); */ } } printf("--- 3 eme etape : lecture des valeurs dans la deuxieme struture ---\n\n"); printf("On refait pointer ptr_cell vers sa premiere valeur:\n"); printf("ptr_cell(%p) <- adr_ptr_cell(%p)\n\n", ptr_cell, adr_ptr_cell); ptr_cell = adr_ptr_cell; for(i = 1; i < (ptr_champ->largeur)-1; i++) { for(j = 1; j < (ptr_champ->hauteur)-1; j++) { printf("val contenue dans ptr_cell %d, a l adresse : %p\n", ptr_cell->val, ptr_cell); (ptr_cell)++; } } free(ptr_champ->tab); /* plante */ free(ptr_champ); return 0; } je ne sais pas si ça se vois, mais je programme un peu a l'aveuglette... et aurais tu une idée pour l'erreur sur le free lors de l'execution du programme. Alouant bien "ptr_champ->tab" au départ je devrais pouvoir le desaouler a la fin. non ? Merci encore
  2. Merci ! entre temps j'ai réalisé cela : #include <stdio.h> #include <stdlib.h> /* [...] structures identiques que préecedemment */ cellule *pos(field_t *F,int x,int y){ return (F->tab) + ((x * F->largeur) + y); /* (F->tab) + F->largeur * y + x; */ } int main() { int i, j; field_t *ptr_champ = (field_t*)malloc(sizeof(field_t)); cellule *ptr_cellule, *adr_ptr; cellule *ptr_cell; ptr_champ->largeur = 10; ptr_champ->hauteur = 5; ptr_champ->tab = (cellule*)malloc(sizeof(cellule)*(ptr_champ->largeur)*(ptr_champ->hauteur)); ptr_cell = (cellule*)malloc(sizeof(cellule)*(ptr_champ->largeur)*(ptr_champ->hauteur)); ptr_champ->tab = pos(ptr_champ,1,1); for(i = 1; i < (ptr_champ->largeur)-1; i++) { for(j = 1; j < (ptr_champ->hauteur)-1; j++) { /* insertion */ if (i < 5) ptr_champ->tab->val = 16; else ptr_champ->tab->val = 18; if((i == 1) && (j == 1)) { ptr_cellule = ptr_champ->tab; printf("----\n"); } ptr_champ->tab->gen = 17; printf("TEST- %d %d : %d - %p\n", i, j, ptr_champ->tab->val, ptr_champ->tab); (ptr_champ->tab)++; } } ptr_champ->tab = ptr_cellule; printf("----------------------------------------\n"); for(i = 1; i < (ptr_champ->largeur)-1; i++) { for(j = 1; j < (ptr_champ->hauteur)-1; j++) { ptr_cell->val = ptr_champ->tab->val; printf("TEST- %d %d : %d - %p\n", i, j, ptr_champ->tab->val, ptr_champ->tab); printf("TEST- %d %d : %d - %p\n", i, j, ptr_cell->val, ptr_cell); if((i == 1) && (j == 1)) { adr_ptr = ptr_cell; printf("---- %p : %p\n", ptr_cell, adr_ptr); } (ptr_champ->tab)++; (ptr_cell)++; printf("TEST-- %d %d : %d - %p\n", i, j, ptr_champ->tab->val, ptr_champ->tab); printf("TEST-- %d %d : %d - %p\n", i, j, ptr_cell->val, ptr_cell); } } printf("---- %p : %p\n", ptr_cell, adr_ptr); ptr_cell = adr_ptr; printf("---- %p : %p\n", ptr_cell, adr_ptr); for(i = 1; i < (ptr_champ->largeur)-1; i++) { for(j = 1; j < (ptr_champ->hauteur)-1; j++) { printf("TEST--- %d %d : %d - %p\n", i, j, ptr_cell->val, ptr_cell); (ptr_cell)++; printf("TEST---- %d %d : %d - %p\n", i, j, ptr_cell->val, ptr_cell); } } free(ptr_champ->tab); /* ne plante plus... */ free(ptr_champ); return 0; } Est ce que c'est cela : if((i == 1) && (j == 1)) { adr_ptr = ptr_cell; } "garder une valeur au chaud"... et faire des "(ptr_cell)++;" est ce vraiment correct ? d'ailleurs free(ptr_champ->tab); ne plante plus
  3. Bonjour, J'utilise le programme suivant pour inserer des nombres dans une structures. (Au final je souhaites utiliser une deuxième structure temporaire pour y inserer les enregistrements mis a jour pour ensuite les transferer dans la premiere). Mais pour le moment le problème est le suivant : j'insère bien mes enregistrement dans le tableau 2dimensions de ma structure, seulement ensuite lorsque je cherche à les retrouver je bloque. Mon programme est le suivant : #include <stdio.h> #include <stdlib.h> typedef struct { int val; /* Contenu de la cellule */ int gen; /* Nombre de générations pendant lesquelles la cellule a eu sa valeur courante */ } cellule; typedef struct { cellule *tab; /* Tableau à 2 dimensions de cellules */ int largeur, hauteur; /* Dimensions du tableau de cellules */ } field_t; cellule *pos(field_t *F,int x,int y){ return (F->tab) + ((x * F->largeur) + y); /* (F->tab) + F->largeur * y + x; */ } int main() { int i, j; field_t *ptr_champ = (field_t*)malloc(sizeof(field_t)); ptr_champ->largeur = 10; ptr_champ->hauteur = 5; ptr_champ->tab = (cellule*)malloc(sizeof(cellule)*(ptr_champ->largeur)*(ptr_champ->hauteur)); for(i = 1; i < (ptr_champ->largeur)-1; i++) { for(j = 1; j < (ptr_champ->hauteur)-1; j++) { /* insertion */ ptr_champ->tab = pos(ptr_champ,i,j); if (i < 5) ptr_champ->tab->val = 16; else ptr_champ->tab->val = 18; ptr_champ->tab->gen = 17; printf("TEST- %d %d : %d - %p\n", i, j, ptr_champ->tab->val, ptr_champ->tab); } } printf("----------------------------------------\n"); printf("----------------------------------------\n"); for(i = 1; i < (ptr_champ->largeur)-1; i++) { for(j = 1; j < (ptr_champ->hauteur)-1; j++) { /* En reutilisant la fonction suivante de nouvelles adresses sont affectees... * ptr_champ->tab = pos(ptr_champ,i,j); * sans la fonction, ptr_champ-tab pointe vers la derniere adresse */ printf("TEST- %d %d : %d - %p\n", i, j, ptr_champ->tab->val, ptr_champ->tab); } } free(ptr_champ->tab); free(ptr_champ); return 0; } par ailleurs mon premier free() plante. Toute idée ou indice est le bienvenue, en vous remerciant !
  4. Salut tlm, il y a quelques trucs que je ne piges pas et vu que je n'ai pas trouver les réponses à mes questions j'me tourne vers vous Pourquoi est ce que l'on a la valeur ascii et pas Coucou ? Pourquoi est ce que le fait de mettre des tab[] fait planter. normalement *tab équivaut à tab[]... Pourquoi est ce que je suis obligé de passer par "(*tab)[taille]" pour parcourir mon tableau, au lieu de *tab[taille] ? d'avance merci ++ iph #include <stdio.h> int l(char **tab) { int taille = 0; while((*tab)[taille] != '\0') { taille++; } printf("tab : %p\n", tab); // @ de tableau_de_char printf("&tab : %p\n", &tab); // @ du pointeur tab printf("&(*tab) : %p\n", &(*tab)); // @ de tableau_de_char printf("*tab : %s\n", *tab); // Coucou // printf("tab[] : %s\n", tab[]); // ERREUR // printf("(*tab)[] : %s\n", (*tab)[]); // ERREUR printf("(*tab)[0] : %d\n", (*tab)[0]); //valeur ascii printf("taille **tab : %d\n", sizeof(**tab)); // taille d'un char printf("taille tab : %d\n", sizeof(tab)); // taille d'un pointeur printf("**tab : %d\n", **tab); //valeur ascii printf("&(**tab) : %p\n", &(**tab)); return taille; } int main (void) { char *tableau_de_char = "Coucou"; int taille = 0; printf("&(*tab_...) : %p\n", &(*tableau_de_char)); printf("*tab_... : %d\n\n", *tableau_de_char); // val ascii du premier char taille = l(&tableau_de_char); printf("emplacement de tableau_de_char : %p\n", &tableau_de_char); printf("taille : %d\n", taille); printf("taille : %d\n", sizeof(tableau_de_char)); // taille d'un pointeur (4 octets) printf("taille d'un char : %d \n", sizeof(char)); //taille d'un type char (1 octet) return 0; }
  5. iph

    Outlook 2002

    Bonjour, Voila ma messagerie Outlook, ne s'affiche pas lorsque je clic sur l'icone. Le processus se lance, mais pas l'interface. Je suis obligé de détruire le processus dans le gestionnaire de tâches puis de relancer outlook, pour avoir enfin le programme devant mes yeux. Savez vous si le bug est fréquent ? à quoi est il dû (trop de messages, OS instable, ...) ? Et comment lancer l'interface du premier coup... Suis je obligé de réinstaller Outlook ? merki
  6. Parce que comme il est dit : Donc la boucle for est à placer dans un main comme il suit : import java.io.*; import java.text.*; import java.util.*; import org.jdom.*; //jdom.jar de jdom-1.0.zip www.jdom.org import org.jdom.output.XMLOutputter; public class Creax { // Creation du fichier XML Element root = new Element("Ephora"); Document doc = new Document(root); Element element = new Element("coucou"); private static int ni = 0; private void crea (Element root, String nom, String valeur) { Element element = new Element(nom); element.setText(valeur); root.addContent(element); } public void main() { String xmlString = new String("patate"); String sousChain = new String("concombre"); for(ni=0; ni<=sousChain.length(); ni++){ crea(root, "boeuf", "carotte"); System.out.println("test"); } } } merci, clap clap
  7. Salut tlm, Voila, lorsque je souhaites faire fonctionner le programme suivant, j'ai une erreur qui apparait sur la boucle for, qui me dis "illegal start of type", j'ai fait mon petit tour sur le net, et il semble, qu'il n'y ai pas d'erreur... Qq1 à t il, déjà été confronté à ce truc ? Est ce que ma déclaration est mauvaise ? Merci d'avance import java.io.*; import java.text.*; import java.util.*; import org.jdom.*; public class Creax { // Creation du fichier XML Element root = new Element("Ephora"); Document doc = new Document(root); Element element = new Element("coucou"); private void crea (Element root, String nom, String valeur) { Element element = new Element(nom); element.setText(valeur); root.addContent(element); } String xmlString = new String("patate"); String sousChain = new String("concombre"); for(int i=0; i<=sousChain.length(); i++) { crea(root, "boeuf", "carotte"); } }
  8. Et bien il semblerai au vu du nb d'octets envoyés que ça sorte, mais je n'ai pas de tools style ethereal pour confirmer : 388 wuampd -> 4353 TCP C:\WINDOWS\System32\wuampd.exe 388 wuampd -> 4354 TCP C:\WINDOWS\System32\wuampd.exe 388 wuampd -> 4355 TCP C:\WINDOWS\System32\wuampd.exe [...] 388 wuampd -> 4399 TCP C:\WINDOWS\System32\wuampd.exe 388 wuampd -> 4400 TCP C:\WINDOWS\System32\wuampd.exe 388 wuampd -> 4401 TCP C:\WINDOWS\System32\wuampd.exe 388 wuampd -> 4402 TCP C:\WINDOWS\System32\wuampd.exe 388 wuampd -> 4403 TCP C:\WINDOWS\System32\wuampd.exe 388 wuampd -> 4404 TCP C:\WINDOWS\System32\wuampd.exe (log fourni par Fport)
  9. Salut tlm ! lors d'un netstat -a il m'apparait ce qu'il y a ci dessous. Après un bref allé sur le net, il ne semble pas avoir de réelles explcations si se n'est un DOS, ni de solution. Auriez vous une réponse pour contrer ce pb (si toute fois s'en est un). Merci. PS : y'a aussi un fichier nommé wuampd qui est dans le run de ma base des registre, je ne sais pas q'il y a un lien. Là de même il n'y a pas vraiment de réponses... TCP CLARA:3277 128.246.69.141:microsoft-ds SYN_SENT TCP CLARA:3278 128.36.234.158:microsoft-ds SYN_SENT TCP CLARA:3279 128.216.234.10:microsoft-ds SYN_SENT TCP CLARA:3280 128.22.24.113:microsoft-ds SYN_SENT TCP CLARA:3281 128.199.106.131:microsoft-ds SYN_SENT TCP CLARA:3282 128.255.62.89:microsoft-ds SYN_SENT TCP CLARA:3283 128.182.194.134:microsoft-ds SYN_SENT TCP CLARA:3284 128.26.21.224:microsoft-ds SYN_SENT TCP CLARA:3285 128.219.44.193:microsoft-ds SYN_SENT TCP CLARA:3286 128.179.206.76:microsoft-ds SYN_SENT TCP CLARA:3287 d48-178.dyn.cs.rpi.edu:microsoft-ds SYN_SENT TCP CLARA:3288 128.168.37.141:microsoft-ds SYN_SENT TCP CLARA:3289 128.127.15.143:microsoft-ds SYN_SENT TCP CLARA:3290 128.86.63.237:microsoft-ds SYN_SENT TCP CLARA:3291 128.83.55.9:microsoft-ds SYN_SENT TCP CLARA:3292 128.170.140.123:microsoft-ds SYN_SENT TCP CLARA:3293 128.48.247.213:microsoft-ds SYN_SENT TCP CLARA:3294 128.129.49.31:microsoft-ds SYN_SENT TCP CLARA:3295 128.96.31.115:microsoft-ds SYN_SENT TCP CLARA:3296 128.166.149.241:microsoft-ds SYN_SENT TCP CLARA:3297 128.41.212.55:microsoft-ds SYN_SENT TCP CLARA:3298 128.12.200.21:microsoft-ds SYN_SENT TCP CLARA:3299 128.96.22.163:microsoft-ds SYN_SENT TCP CLARA:3300 128.87.104.40:microsoft-ds SYN_SENT TCP CLARA:3301 ksglb8.harvard.edu:microsoft-ds SYN_SENT TCP CLARA:3302 128.14.145.124:microsoft-ds SYN_SENT TCP CLARA:3303 128.96.49.181:microsoft-ds SYN_SENT TCP CLARA:3304 128.13.231.182:microsoft-ds SYN_SENT TCP CLARA:3305 128.127.163.29:microsoft-ds SYN_SENT TCP CLARA:3306 128.20.18.203:microsoft-ds SYN_SENT TCP CLARA:3307 128.190.145.123:microsoft-ds SYN_SENT TCP CLARA:3308 128.130.206.181:microsoft-ds SYN_SENT TCP CLARA:3309 128.99.236.112:microsoft-ds SYN_SENT TCP CLARA:3310 128.159.114.187:microsoft-ds SYN_SENT TCP CLARA:3311 128.20.9.186:microsoft-ds SYN_SENT TCP CLARA:3312 128.255.69.245:microsoft-ds SYN_SENT TCP CLARA:3313 mec-cscs-18e.Princeton.EDU:microsoft-ds SYN_SEN T TCP CLARA:3314 128.228.244.59:microsoft-ds SYN_SENT TCP CLARA:3315 x101-241-83.dhcp.umn.edu:microsoft-ds SYN_SENT TCP CLARA:3316 128.175.58.90:microsoft-ds SYN_SENT TCP CLARA:3317 illegally-used-at.fsu:microsoft-ds SYN_SENT TCP CLARA:3318 128.191.210.98:microsoft-ds SYN_SENT TCP CLARA:3319 kitt29-156-dhcp.resnet.colorado.edu:microsoft-ds SYN_SENT TCP CLARA:3320 secuser.model-fx.com:http ESTABLISHED TCP CLARA:3321 fl01.ct2.comclick.com:http ESTABLISHED TCP CLARA:3322 fl01.ct2.comclick.com:http ESTABLISHED TCP CLARA:3323 128.67.173.108:microsoft-ds SYN_SENT TCP CLARA:3324 janetspc.larc.nasa.gov:microsoft-ds SYN_SENT TCP CLARA:3325 128.247.23.52:microsoft-ds SYN_SENT TCP CLARA:3326 128.221.29.206:microsoft-ds SYN_SENT TCP CLARA:3327 128.198.59.160:microsoft-ds SYN_SENT TCP CLARA:3328 www.emporiumnaturals.com:microsoft-ds SYN_SENT TCP CLARA:3329 128.184.29.187:microsoft-ds SYN_SENT TCP CLARA:3330 128.39.45.99:microsoft-ds SYN_SENT TCP CLARA:3331 statman2.beav.orst.edu:microsoft-ds SYN_SENT TCP CLARA:3332 vikatmaa.cs.helsinki.fi:microsoft-ds SYN_SENT TCP CLARA:3333 128.76.56.210:microsoft-ds SYN_SENT TCP CLARA:3334 128.199.135.73:microsoft-ds SYN_SENT TCP CLARA:3335 128.199.135.73:microsoft-ds SYN_SENT TCP CLARA:3336 selobrlaptop.lib.ohio-state.edu:microsoft-ds SY N_SENT TCP CLARA:3337 128.158.181.101:microsoft-ds SYN_SENT TCP CLARA:3338 128.28.188.161:microsoft-ds SYN_SENT TCP CLARA:3339 128.36.141.42:microsoft-ds SYN_SENT TCP CLARA:3340 128.9.57.41:microsoft-ds SYN_SENT TCP CLARA:3341 cbilws48.cbil.vcu.edu:microsoft-ds SYN_SENT TCP CLARA:3342 128.231.120.13:microsoft-ds SYN_SENT TCP CLARA:3343 128.84.216.207:microsoft-ds SYN_SENT TCP CLARA:3344 128.68.253.189:microsoft-ds SYN_SENT TCP CLARA:3345 128.157.238.87:microsoft-ds SYN_SENT TCP CLARA:3346 128.65.48.194:microsoft-ds SYN_SENT TCP CLARA:3347 rescomp-04-72270.Stanford.EDU:microsoft-ds SYN_ SENT TCP CLARA:3348 128.203.216.43:microsoft-ds SYN_SENT
  10. Salut j'ai une minute pour vous dire que j'ai deux léger pb : 1. avserve.exe qui occupe une place énorme dans ma liste de proc et qui empeche manifestement les prog de se lancer. 2. j'ai un prog mutant sur le disque. il me cré un ficher *****_up.exe (ou * représente un chiffre aléatoire) et fais planté mon pc un peu à la manière de blaster : il me fait planter LSA Shell et mon pc est obligé de redémarer... code d'état : -1073741819 Si qqun à une solution... Merci
  11. iph

    Web access blues

    Grave file les DNS de la passerrelle pour la connexion au net. Et pis rajoute la' @ de la passerelle aussi. Et puis achete des technologies standards ;p (bon ok j'suis un peu vache
  12. iph

    adls 512 rame??

    Arrete d'installer n'importe quoi sur ton pc
  13. iph

    protection

    J'pense pas qu'on pourra jamais se protéger contre tout. Mais on peut espérer... ma bon si tu veux éviter les virus tu peux tjrs utilisé des systèmes libres comme GNU/Linux. En général on a en plus les outils de sécurité fournis avec (netfilter/iptables). Si tu veux rester sous win ba y'a jério qui fait pare feu & avp comme antivirus
  14. Salut tlm, Vu que je n'ai pas trouvé mon bonheur je fais un petit post sur mon pb de connexion avec un modem ADSL Bewan Ethernet, qui n'arrive semble t'il pas à se synchroniser (diode orange qui clignote, s'allume et s'éteint en boucle), ce qui a pour effet une superbe erreur 721 (sous win2k). Ce qui est étrange c'est avec mon modem sagem800 c parfaitement synchro vu ke c celui là que j'utilise maintenant Les drivers sont ceux fournis avec le modem. Et pis quand je vais voir sur telnet y'a ça : DSL Phy: Modulation type: g.dmt Downstream Upstream Net data rate 640 160 kbit/s Margin 31 7 dB DSL Phy: DSP Status: SHOWTIME. DSL Phy: DSP Status: ACTREQ. DSL Phy: DSP Status: INIT. Si qq'un a la solution ce serai super kewl
  15. iph

    Qui a utilisé FreeBSD?

    D'ailleurs MS utilise FBSD pour certains de ces serveurs. :>
×
×
  • Créer...