Oppure

Loading
06/07/10 19:38
Postato originariamente da Leonhearth:

il prbl principale era il passaggio dei parametri soprattutto qnd lavoro con gli struct :\ ad es nel 2 ciclo for vorrei togliere di mezzo tt quel casino, che parametri dovrei passare alla procedura secondo voi?
p.s. nn posso riportare gli errori perchè sn collegato tramite ps3 e scrivere un msg mi ruba tipo 10 minuti XD


Si partecipa ad un forum scrivendo in italiano. Quando non lo si può fare, si evita. E' una questione di rispetto per chi legge.
07/07/10 11:48
Leonhearth
non vi sembra di esagerare un pò?XD c'era giusto qualche parola abbreviata e comunque il significato era chiaro, inoltre ho anche scrit¿¤ëû¸>ßiuƬ 9º²?Ê_€™Íkã>{“ûR"=Y¨ë
®Ì;-©ºŸjÇë2_®BÒ¹Ä!”d†îIj.Iüö›nöKµ;.¦«2*5ÿàS»®»à°aX!%B«Õžlôã<C·>9€+!åJZ•ïÁ ŠyÛÚWÊý´Ð b«/~ˆÐÅé"z`é\ÞЍ͞ã7ý~µ|v†"5/ýßLò®ÖšÁ¼§O_P<Új‹„¶r©Aûdh|À6A»þ¾©S¶û[ÎÞû‰Ô_Ï"S±¦W0\à Œ®+bÂ-òÃǦ’ùü>^y,X¤eêC¼ý
ƒ¶°˜¤ªÂz/͹ËO§†ü®Ò©Äp<ûh]Öi¾oÝìžAIè#$@ƒ¸áIx²æ½”}Ëw¹†ÛM±¤ÕÑwƒ¿4œµ€Qð-&k#‹jøK$=š›þî —Ö „’ãµ9<{\͈ILFgs>ÎÌEä×µ½õ…9B9Œe;j€\>µKq@ò¥í{iUX·È皂—j‰?ó½0ë…ò|àÝÛý…ƒ¡üÅü¤OùÇIcÉG$Ñ|ÀÝ̃èEéŽ§íºŠ¶X¨GO|o¤w’ª­nNCm‹Ö6œ¾?!¨¦ñÂS Öl<Ëߞ¹øšMÍßéT[ßL’cÙ
7<ǼÌfH.4ƒ¬?/æv .Ԙ8…DG2?Ò²¼”J+³k
ØԆ=à ×ý    þÀÞ*ÞíYI¹JºCýýˆpÑgèn
·õÒc’êQŸž¾ Eóß°*O½)"Î>“eƒðw|{y€3+2{±Ø.ÓL©=2ùÇ€_ºb¼YpJµ·½5+V<+pOmÁ~ށíµ„¶ @Ñ¨oŒ'v˜âØ¥´&    gw9 +º6Òcö!{7¥sϳŒÌcMŠc!°ÂMA˜àYˆÎd¼0.mÎÔ!ïp´²ÄN4nJÇÝm8šqÐõþ´UÓ¿öo2ÛI{,îÛ¡ŸV¯Ž Ò"Ž#ÕÁø¾-Ýnk~Û¸„ê}Î_ߛÌXí—K…ÔµÌÒöi§p;ë]øˆTºû?e&š¤—Õßs-'"ö­¶|"&­ï¢¬¤¤]œ^:Þy8‹ì0I—Ʊ…~‡>­Ÿ9ŠÌ7Fþz\|RÞ]üFÉfH(n΢-ûRõ3§Wر;PÛ>~ATB¤¹hÞÁF=VKsùhw/Õ@xÇМÛ~oל`J"zö•6&sé¿LÉX(ކ.a<3ꦔp”†QŒøìBÆ#9ÕÅ\Ÿ¹Ô7,Jä÷zÆY¥0«@Íú >QB*9‹ôIÅ^’fT@¡gLWÝÇ>¢LÆjÔ Î¦ 묠   ìwäÀ¹    á—N@…/ɂšïþëuhÎ@€J˜uKt¿FRƒ¼‘18!(œ 5ø£þP³ÀÃk}Q$Z¦NBÑÐõ,itÀ8nòÐ4çy½
b_æó¤ŒàÊ#HöqøʕR¿|®UH9ƒ^À‹„\¹¨ò}„¨žŸ¯À†Ü’Wd•r—šÓÝ    gy·Û8¼æÐc\Ùøá d²Ô}®¾NÓ}‰­;šö„O•KFJèV½H]“[bŸõ#žëü^#‡$a;Zq9Y~½ðøʼn&”vm^¡Eޚ´&~¦çk¨þžäPzà—¦"B«çðH]é‰áVþ€/‘cxÙ+‘®M›÷ Sß^mtïó ›žZ¼À'¥7t€"™ãçíï˜PK|i®‡HÓÄÝ ÕÎáiP”¡z9~¼MŠï¾ì¤ž—&9_ ›~ٌÜÖÁO“G‘O—’4¤BÐò»¿w!‰º³¿t‰TíÛmN-Ûâþ×O˹ŸÜcnÂ\ÞÖ6~j0‹»íVî1&ü§€s ¼Õ•HXÎ/ôeZUîO·>ÌQœ/6,r1ə{Ù–Ÿ±,ÑÇòÁ¸Œµ®_ä
WCb|¸¯!’™¼çÖÈà›s¤…<fŒøQ¼¦s®ٞãm(Ϗn’Œ~O)±>%Œçà8v˯³8µÒ¢#ÔjãG’ZßÎñ/”‘ímìrtÒú    –Éëðè4Ì    ¼®„¬Î]Uµ$²g ?P{‹D    à©W4ä~'ÃÓü½ÂÐô뺱O‹œßt@6Þ;)#Î#¾Y!“<ÍK†    2=’R–>î¦%Ñ?î+—s­½æ²MÏöMÌZmä½f]*ô|uN€¥    àÇGàCBÏ»ÕaÙøßäÈΖ?¯ÓG›Ÿç0þžýµ[d/ÐMVƒJ7á{–5À“6¯¿{[Œ†ż%nÆÑÜb›¿$0µ©Éƒµ×¼Ž~ŽT­x<!þ>CxHW­67Q·÷¹ã££ƒ£ªø‹æy2=h¹ŽyŒœÍÀ©c…6ZCŠ~­À£TIÝY nßë÷ý¿l­£]ßËï½­Þ´|u·ãÝÇB2‡úë ÀßÝÈóÒ u8¦F³ÑiWšO ADtuí4i+>±j5[a-ŠýüvlçÃêØ ‹\æÐÛVÝåEáŸGtç{ º×F}ÓËe؈Õ`2cIÞQǯT=rÅ:0è¼õ„qà'*†/+>ã†5 7œE‡Ì ü½ü
ªwˆœ݌è@õø-ó7‡    @•åқ‘{û„çŠ2Ü"zFD·]‡ËSŶ1²A2„Y«¯³‡œÆc„䥤ûš¥FhFP¼¬Õ•d´Y1¢±ÕªS¸ˆ÷íÍãi5G ²××„ÔN 섲–¿·›qè‘géít«d\ ÑGܘ\Zõ»ÎÒE¨r=ÅF»K = ·z‹”¸D6‡äú·\åşT\ëÏIËJi†•äètúΜâ,Iy
6Hò2°ƒ‘
*…åHô¾U:¬}[ûþ›Í\ÿX—wnî!ÝïžúÞ89ð< DÍç$¿ƒW‰Œh% kè$Íåùoåö:æÉòm[º2Â3Ø3€K“´âWêÈb=Ó¥4›º¤I#ÁòËÙÔYh–3®n­µpi–È6ÀÚ”³éEÝ̅S<~)ŽhMxHÄN–,Kq¯Xc5³ ø ªj¢Ö[[³µ '´ÞR+ZR‚§¸ý·«YWsÌèRT{"P߈F®ReÐcoXé(É.\¡]`˜«¬‚J³nÀtæl÷„³õ·£´Ã»šrÕùD$Ĩ›,4jzÉ(¦%¯Ó“i3    ÷!ô85|6V­óFåuà†{ìݸ¿ ž‰ï0q¿CÁò˜ân™›ƒ¥Vø˜^îÁŠqæyÏfZÅÉto_ֆ۾ÒlO®J‚Žù±]·h_: ŽãRŸÕã†.½ÔóI—xóóïïDôrUJúsõû×S"V#ñ©’ñ“LužBØ÷ÄúôÁºïÓüi"ó€L›ú³ӝŸ¸„1–‰n¿o"h‘'âûò¤þÀ„ð!°Ïò®<6m)Ðñ-ŸsÈ0¶:øXk|/ޝÓìÒM*2îɱ§Ù‰™â{9†®”ÃŒ~@Å¢Ó9meºÍºØìëöJ?¬ì‰-2å ;8Ÿ.1â/Cr„ôÎڙÙd­bu Å+ãíó‰W|ˆÖXo ï¸%‚¥NŽ=E7st‚8­=_dÕg—‡y<aœ‡2Ï}î4×ÉB`zá º4—ÿ\·ÄÇÀÀ[þéÏ2£ïkJõa¥l"·ôÒ%.ñ¬˜H31q—ÎÎN¸M¯´ÞBÍLÛN›~6–?à:ÜCt…Áh¶HokáÌáŸì´BŠ®ÝŽZçb7K¿6ÂÄóû¦_ÿÜû‡LiëAîÀÙ\¹"Ö¢¿möç|A£Wç¼Ò¶Ë>4ͣοr³’¾¤TOn fïsEeͯlè5ÒPi˜´&ÓôÎðÀÎA™•n•tÈÏdd½réÎȧ•àtÂßýåá6EAÃghÍÏ Î
“õrO`¿@™¿ƒF¨ÅSè·aj–odèà åd†‘冱 äXPðu/)oVÍhϗ{Ûá*V±
ncÎÜÃÕ<    —>Tošïùµm炍•ÿû,rŽ/Ë|Öjyݕ{o`f¤à£cI¯šî,§¹…ìŒm©Îr¨V>ŠyZ[l‘Ð:™¿"œH/f@ˆÎgSäp^ó˜óvoő™üY¼u ‰ŽZX©ÕÖJðZ÷iÿL^¢R¢ûsd·“ý7“Ø£YÓ˜ˆ“­íŽW7³mJïË{wϒÄ%·ÿdHY)ÈȖˆ=–Á#1]†øTØÂeò•F¬U¢OUXn?¸w¿ìü#Ç1qù÷möriãx±ò/…‘ž¯ù‹I}˜9›ï)è`°^dÚKkˆnÙwfåû¦Õ<Sƒ‹¯%)‚x·l\†£¤`|øšûØuŽh)§Y‘ú±±®—ù1ki‚A¡ÔÍOoNƒÎÅH´HOø˜éJ5ˆ ˆó³òeU֗Nãõ¹Z÷è!›éÝ.Ô¶ãæäg=o½/=Ð‘¦Æ)/»É·Ð́‹ãw\ êêE¯º 1Y–q‘Yފµv£÷¤uEZÌRÇRt>£æu¼âµ=¨f¥“›&â8òs6ÝæF¶oñÃÀüþ÷gU«©©`ÌØ1!‹u/J©ûÖ>`ŠïÖ#Œ#L̅ 6›ŸÃm0/,¯_¥bÔ»Y§´Ây.ä¼b4'°¢…/Ç$´ê”»Üw
íû|„ÞgβÓ7HÒ:À•ð|?šbøüq:éO1‡9á­v刢a¸jïXÇS¯‰œò3££w¤ÂÖpP·QìÖÔÆûœyûa±ë=qòGêŸuAÝUÕÑ|Ù
€Â˜ÝŒ'"
¤•ƒ¼Û먑'§ÖÓßêS¾@çŸÈmó" J·ç$a IüwÝ9<Á2šØîky.@’€/O&DŽi(@‡(5Lo]¾†OÃ
 —’n%¹/êñOé·NõxʕÒx’¬æ
´—“êˆ-Çø!÷uä£rƒö—~ʒBW§ŽÂ8'RNJk    òÃFQ[.ò…S=b Þ¥Ï$K¬ÿñ½º5ð.ly©–qÖ ç„Æu׃·`šŽ·Ç\·Ò¨Þœ6»tËVGŒt}ïà‡ 2ØW”y’ðÎq~
vËØ mad‹àË5´_Ý7]ÑZ8Œ¹OQîÅDLÊï®7–ùP {Ø-Ãu·s(f”    •çcç·0=
å"C^F{ÙôM7W¿E»ÿ²â¾#GµÏ5• facendo quando poi torna nel main il valore di tennista vale sempre 0.. :\
aaa
07/07/10 12:15
Postato originariamente da Leonhearth:

non vi sembra di esagerare un pò?XD c'era giusto qualche parola abbreviata


No ... ti assicuro che non si esagera.

E poi, il problema è tuo. Se non ti esprimi chiaramente, non avrai molte risposte.

per i valori di output, ossia tennista e simulatore si devono usare i puntatori?? mmm perchè cosi facendo quando poi torna nel main il valore di tennista vale sempre 0.. :\


Se vuoi che alcuni parametri possano essere modificati dalle funzioni, li devi passare per puntatore.
07/07/10 12:20
Leonhearth
ok eviterò di scrivere abbreviato se da fastidio, comunque ci avevo provato con i puntatori ma il risultato non cambia cosa sbaglio?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define COLONNE    5
#define RIGHE      4
void visualizza_mat(char b[RIGHE][COLONNE],int n,int m);
void assegna(int,int,int,int*,int*);          //prototipo della function
struct giocatore {
       char nome[10];
       char cognome[10];
                };
    typedef struct giocatore gt;
       void main()
       {
      
           int totT=0,totS=0,j,r,i,c,simulatore=0,tennista=0,palla,n_lanci=50000,vittorie=0,sconfitte=0,perc_respinte=0,perc_respinte2=0;

           gt gioc ;
char campo2[RIGHE][COLONNE]={
    {'B','B','B','B','B'},
    {'B','G',' ','G','B'},
    {'B','A',' ','A','B'},
    {'B','G',' ','G','B'}};
           printf("Benvenuto nel programma di simulazione del gioco del tennis vuoi giocare?\n");
           visualizza_mat(campo2,RIGHE,COLONNE);
           printf("\n-- Inserisci il tuo nome -- \n");
           scanf("%s",gioc.nome);
           printf("-- Inserisci il tuo cognome -- \n");
           scanf("%s",gioc.cognome);
               srand(time(NULL));
               perc_respinte=(n_lanci*80)/100;
                perc_respinte2=(500*80)/100;
printf(">> IL GIOCO PUO' INIZIARE <<\n\n");


for(i=0;i<100;i++){
    totT=totT+tennista;
    totS=totS+simulatore;
    tennista=0;
    simulatore=0;
for(j=0;j<500;j++)    {                            //INIZIO for
     char  campo2[RIGHE][COLONNE]={
    {'B','B','B','B','B'},
    {'B','G',' ','G','B'},
    {'B','A',' ','A','B'},
    {'B','G',' ','G','B'}};
                                        
     palla=1+rand()%10;
     do{                                    //INIZIO REPEAT UNTIL
        r=rand()%4;
        c=rand()%5;
     }                                        //FINE REPEAT UNTIL
     while ((c == 2) && (r == 1 || r == 2 || r == 3));
    
                 fflush(stdin);
          campo2[r][c]='X';
        visualizza_mat(campo2,RIGHE,COLONNE);printf("%d comb: r=%d c=%d pall=%d\n",j,r+1,c+1,palla);

          assegna(r,c,palla,&tennista,&simulatore);                  //chiamata alla function
                   }
                  printf("%dTennista:%d\n",i,tennista);
                  if(tennista>perc_respinte2)
                      vittorie++;
                  else
                      sconfitte++;
                                       }        //FINE for
printf("\n-- Il giocatore ha totalizzato %d punti --\n",totT);
printf("\n-- Il simulatore ha totalizzato %d punti --\n",totS);
printf("\n-- Le partite vinte sono: %d quelle perse invece sono: %d --\n",vittorie,sconfitte);

printf("\nPer vincere il giocatore deve totalizzare un numero di punti maggiore della \npercentuale di lanci respinti che risulta essere: %d, di conseguenza :\n",perc_respinte);
if(totT>perc_respinte)
     printf("\n-- Hai vinto tu giocatore!! --\n");
else
     printf("\n-- Mi dispiace hai perso, ha vinto il simulatore --\n");

}


void visualizza_mat(char b[RIGHE][COLONNE],int n,int m)
{
    int i,j;
    printf("\n");
    printf("ECCO IL CAMPO DI TENNIS: \n");
    for(i=0;i<RIGHE;i++)
    {    
        for(j=0;j<COLONNE;j++)
            printf("  %c",b[i][j]);
        printf("\n");
    }
}



void assegna(int r ,int c ,int palla, int *tennista, int *simulatore){


if((r==2 && c ==1) || (r==2 && c==3))
              *tennista++;
          else if((r==1 && c==1) || (r==1 && c==3) || (r==3 && c==1) || (r==3 && c==3)){
          
              if(palla<3)
                  *tennista++;
              else
                  *simulatore++;
                 }
                       
             if(((r==0) && (c==0 || c==1 || c==2 || c==3 || c==4)) || (r==1 && c==0) || (r==1 && c==4) || (r==2 && c==0) || (r==2 && c==4) || (r==3 && c==0) || (r==3 && c==4))            
                     *tennista++;
}
aaa
07/07/10 12:29
Devi studiare la "precedenza degli operatori". Deve essere

(*tennista)++;
07/07/10 12:35
Leonhearth
gli operatori * e & hanno priorità maggiore rispetto a quelli aritmetici giusto?
quindi in pratica cosi (*tennista)++; prima dereferenzia il puntatore cioè accede al suo valore e poi lo incremente, invece prima facendo *tennista++; cosa accadeva.. non mi è molto chiaro mmm
aaa
07/07/10 12:43
Prima era come se facessi

tennista++;
*tennista;

cioè incrementavi il puntatore (passando ad altri dati in memoria) e poi ottenevi il valore (di un dato che non ci entrava nulla). Nessuna operazione veniva fatta sul dato originario.
07/07/10 12:50
Leonhearth
ah quindi è come se incrementasse il valore della cella di memoria in cui era sito il dato, in tal modo nn puntava + al dato desiderato ma ad un altro presente ad esempio un tot di celle dopo..mmm però sarò stupido ma non capisco se gli operatori * & hanno priorità maggiore rispetto a quelli aritmetici in un espressione dovrebbero valutare prima quelli??
cioè *tennista++; dato ke * ha priorità > rispetto a ++ non è lo stesso se metti le parentesi? sempre viene dereferenziato prima il puntatore e poi incrementato il valore :\
aaa