Article View: es.comp.os.linux.programacion
Article #18437Re: Una ayuda please :), piruleta por medio.
From: *puntero_loco
Date: Mon, 06 Sep 1999 00:00
Date: Mon, 06 Sep 1999 00:00
65 lines
3165 bytes
3165 bytes
El Sun, 05 Sep 1999 20:17:15 +0200, CJR <cj.ramos@teleline.es> escribi�:
|Los programadores me han preguntado que hace esta funci�n.
|Una especie de apuesta, piruleta por recompensa.
|
|La cuesti�n est� en ver quien es el primero que sabe que hace esta
|funci�n :
|
|void send(int* to, int* from, int count)
|{
| int n = (count+7)/8; // 1
| switch(count%8) { // 1
| case 0: do { *to++ = *from++; // 2
| case 7: *to++ = *from++;
| case 6: *to++ = *from++;
| case 5: *to++ = *from++;
| case 4: *to++ = *from++;
| case 3: *to++ = *from++;
| case 2: *to++ = *from++;
| case 1: *to++ = *from++;
| } while (--n>0);
| }
|}
|
1) Tomamos el resto de dividir count entre 8. Con este resto: Salga lo que
salga copiamos el contenido de la posici�n de memoria from en la direcci�n to.
Y esto lo hacemos mientras (while) n sea mayor que cero decrement�ndolo cada
vez. Por lo tanto solo copiamos aproximadamente 1/8 parte de count.
2) Sin embargo lo del ^Z creo que es una vacilada, que el sabr� lo que hace
(con el editor que utilize), pero que no es parte del C, al menos que yo sepa.
Sin embargo, por la estructura del programa creo que lo que ese ^Z hace es que
salte a la siguiente linea y antes de interpretar lo que queda, con lo que el
programa sin chorraditas quedar�a:
void send(int* to, int* from, int count)
{
int n = (count+7)/8;
switch(count%8) {
case 0: do {
*to++ = *from++;
} while (--n>0);
case 7: *to++ = *from++;
case 6: *to++ = *from++;
case 5: *to++ = *from++;
case 4: *to++ = *from++;
case 3: *to++ = *from++;
case 2: *to++ = *from++;
case 1: *to++ = *from++;
}
}
As� esta mas claro: Si el resto de count/8 es igual a cero entonces copia el
valor de (count+7)/8 posiciones de memoria con el tama�o de un entero de from
a to. Sino, s�lo copia una posici�n de memoria.
Me debes una piruleta.
--
/-----------------------------\
| *puntero_loco |
| Debian 2.1 Slink |
| jajsNOSPAM@retemail.es |
| http://personal5.iddeo.es/jajs|
\-----------------------------/
Technical Details
Message-ID:
<fkruq7.hb1.ln@127.0.0.1>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<37D2B3AB.CC6C91AF@teleline.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,ec38c86f5338aad7 X-Google-Attributes: gidf86c8,public From: jajs@SPAMNOretemail.es (*puntero_loco) Subject: Re: Una ayuda please :), piruleta por medio. Date: 1999/09/06 Message-ID: <fkruq7.hb1.ln@127.0.0.1> X-Deja-AN: 521819092 Distribution: es Content-Transfer-Encoding: 8bit References: <37D2B3AB.CC6C91AF@teleline.es> Content-Type: text/plain; charset=iso-8859-1 X-Complaints-To: newsmanager@rediris.es X-Trace: batcher.rediris.es 936648594 14083 62.81.102.129 (6 Sep 1999 20:09:54 GMT) Organization: Tarifa plana para todos YA! Mime-Version: 1.0 User-Agent: slrn/0.9.5.3 (UNIX) NNTP-Posting-Date: 6 Sep 1999 20:09:54 GMT Newsgroups: es.comp.os.linux.programacion