FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Funci贸n en C
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Funci贸n en C
Posted: Mon Sep 05, 2011 09:05 PM
Estimados;
dada mi total ignorancia para programar en C, acudo a algun voluntario, para que el c贸digo siguiente lo pueda incluir en un .prg
Como veran es una funci贸n que calcula el CUIL/CUIT (al menso en Argentina).
Code (fw): Select all Collapse
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void algoritmo (int documento[8], int opcion, int &xy, int &z){
聽 聽 int aux=0, i=0;

聽 聽if(opcion==1){
聽 聽聽aux=2*5+0*4;
聽 聽}
聽 聽if(opcion==2){
聽 聽聽aux=2*5+7*4;
聽 聽}
聽 聽if(opcion==3){
聽 聽聽aux=3*5+0*4;
聽 聽}

聽 聽for(i=0;i<8;i++){
聽 聽聽if(i==0){
聽 聽 聽 聽 aux+=documento[i]*3;
聽 聽 聽 }
聽 聽 聽 if(i==1){
聽 聽 聽 聽 aux+=documento[i]*2;
聽 聽 聽 }
聽 聽 聽 if(i==2){
聽 聽 聽 聽 aux+=documento[i]*7;
聽 聽 聽 }
聽 聽 聽 if(i==3){
聽 聽 聽 聽 aux+=documento[i]*6;
聽 聽 聽 }
聽 聽 聽 if(i==4){
聽 聽 聽 聽 aux+=documento[i]*5;
聽 聽 聽 }
聽 聽 聽 if(i==5){
聽 聽 聽 聽 aux+=documento[i]*4;
聽 聽 聽 }
聽 聽 聽 if(i==6){
聽 聽 聽 聽 aux+=documento[i]*3;
聽 聽 聽 }
聽 聽 聽 if(i==7){
聽 聽 聽 聽 aux+=documento[i]*2;
聽 聽 聽 }
聽 聽}

聽 聽if(aux%11==0){
聽 聽聽z=0;
聽 聽 聽 if(opcion==1){
聽 聽聽聽 聽 xy=20;
聽 聽聽}
聽 聽聽if(opcion==2){
聽 聽聽聽 聽 xy=27;
聽 聽聽}
聽 聽聽if(opcion==3){
聽 聽聽聽 聽 xy=30;
聽 聽聽}
聽 聽}

聽 聽if(aux%11==1){
聽 聽聽if(opcion==1){
聽 聽 聽 聽 xy=23;
聽 聽 聽 聽 聽z=9;
聽 聽 聽 }
聽 聽 聽 if(opcion==2){
聽 聽 聽 聽 xy=23;
聽 聽 聽 聽 聽z=4;
聽 聽 聽 }
聽 聽}

聽 聽if((aux%11!=1)&&(aux%11!=0)){
聽 聽聽z=11-aux%11;
聽 聽 聽 if(opcion==1){
聽 聽聽聽 聽 xy=20;
聽 聽聽}
聽 聽聽if(opcion==2){
聽 聽聽聽 聽 xy=27;
聽 聽聽}
聽 聽聽if(opcion==3){
聽 聽聽聽 聽 xy=30;
聽 聽聽}
聽 聽}

}

main(){
int documento[8], z=0, xy=0, opcion=0, i=0;
char aux1, aux2[8];

printf("== Algoritmo para obtener CUIL / CUIT ==\n\n");

printf("\t Seleccione Tipo (Persona Fisica o Juridica):\n");
printf("\n\t 1 - Hombre");
printf("\n\t 2 - Mujer");
printf("\n\t 3 - Sociedad (Empresa)\n\t ");

aux1=getch();
opcion=atoi(&aux1);

printf("\n\t Ingrese numero de documento (sin puntos): ");

for(i=0;i<8;i++){
聽 聽 documento[i]=0;
聽 聽 aux2[i]=getch();
聽 聽documento[i]=atoi(&aux2[i]);
聽 聽printf("%d",documento[i]);
}

algoritmo(documento,opcion,xy,z);

printf("\n\n\t Su numero de CUIL / CUIT es: ");
printf("%d - ",xy);
for(i=0;i<8;i++){
聽 聽printf("%d",documento[i]);
}
printf(" - %d",z);

printf("\n\n\t Creado por Nahuel Sanchez (<!-- m --><a class="postlink" href="http://www.leegar.com.ar">http://www.leegar.com.ar</a><!-- m -->).\n\t Presione una tecla para salir.");
getch();
}


Como ver谩n tiene dos campos que me interesar铆a pasar desde un Dialog. Uno ser铆a un Combo y el otro un get numerico
De manera que para mi ser铆a de utilidad la llamada a la funci贸n C con el paso de estos 2 par谩metros

Desde ya muchas gracias
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Funci贸n en C
Posted: Tue Sep 06, 2011 03:24 PM
y porqu茅 en C ?

Aqui te mando un c贸digo que verifica si el cuil es correcto

Code (fw): Select all Collapse
Function VerificaCuil()
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 
Local i
Local nTotal
Local cCuil
Local naDigitos
Local nEnteroDivision
Local nTotalOperacion
Local cCadena 聽 聽 聽 聽 := ""
Local anMultiplicador := { 5, 4, 3, 2, 7, 6, 5, 4, 3, 2 }

DbSelectArea( "padron" )
padron -> ( DbGoTop() )
padron -> ( OrdSetFocus( "nombre" ) )
While( padron -> ( !Eof() ) )
聽 聽If( !Empty( padron -> cuil ) )
聽 聽 聽 cCuil := StrTran( padron -> cuil, "-", "" )
聽 聽 聽 naDigitos := {}
聽 聽 聽 For i := 1 To 10
聽 聽 聽 聽 聽Aadd( naDigitos, Val( SubStr( cCuil, i, 1 ) ) * anMultiplicador[ i ] )
聽 聽 聽 Next i
聽 聽 聽 nTotal := 0
聽 聽 聽 For i := 1 To 10
聽 聽 聽 聽 聽nTotal += naDigitos[ i ]
聽 聽 聽 Next i
聽 聽 聽 nEnteroDivision := Int( nTotal / 11 )
聽 聽 聽 nTotalOperacion := nTotal - ( nEnteroDivision * 11 )
聽 聽 聽 If( nTotalOperacion == 0 )
聽 聽 聽 聽 聽If( SubStr( cCuil, 11, 1 ) == "0" )
聽 聽 聽 聽 聽Else
聽 聽 聽 聽 聽 聽 cCadena += cCuil + Space( 3 ) + padron -> nombre + CRLF
聽 聽 聽 聽 聽End
聽 聽 聽 Else
聽 聽 聽 聽 聽If( SubStr( cCuil, 11, 1 ) == Alltrim( Str( 11 - nTotalOperacion ) ) )
聽 聽 聽 聽 聽Else
聽 聽 聽 聽 聽 聽 cCadena += cCuil + Space( 3 ) + padron -> nombre + CRLF
聽 聽 聽 聽 聽End
聽 聽 聽 End
聽 聽End
聽 聽padron -> ( DbSkip() )
Enddo
If( !Empty( cCadena ) )
聽 聽MsgStop( cCadena, "No verifica su C.U.I.L" )
End

Return 0


Saludos
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: Funci贸n en C
Posted: Tue Sep 06, 2011 07:19 PM

; solo porque fue lo que encontre en SAN GOOGLE, averiguando sobre el tema

Muchas gracias, por tu codigo

:D

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina

Continue the discussion