Está en la página 1de 34

Columnas Concreto Armado I

MARCO TERICO
PROGRAMACIN
La biblioteca <stdio.h>
Ordena al compilador que incluya en el programa, las funciones de entrada
salida (en nuestro caso hay una: printf, scanf).
stdio.h no es ms que un fichero biblioteca, que contiene una serie de funciones
(instrucciones), en nuestro caso de entrada-salida por pantalla.
La biblioteca <math.h>
Esta librera nos va a permitir utilizar algunas operaciones matemticas como
Logaritmos: log(), log10();sin(), cos(), tan(); raz cuadrada: sqrt(); potencia:
pow(base, exponente),valor absoluto: abs(), redondeo de nmeros: ceil(), etc.
{

Inicio

printf( ); scanf();
}

Funcin que escribe en pantalla

Fin del programa

TIPO DE DATOS

Cada tipo de dato tiene un indicador de formato, a continuacin se define cada


uno:

Asignacin de variables.
FICSA|U.N.P.R.G.

Columnas Concreto Armado I

Obsrvese la sntesis completa de printf:

Mejorados de pantalla
printf("\n\n\n\n\n\n");

/* 6 lineas en blanco */

printf("\t\t");

/* 2 tabuladores */

El manipulador \n determinaba una lnea en blanco, es decir es equivalente a


pulsar la tecla ENTER.
El manipulador \t es equivalente a pulsar la tecla de tabulacin.
El smbolo &
Una variable simple debe aparecer en el scanf precedida del smbolo &:
scanf(%f,&b)
ESTRUCTURAS DE PROGRAMACION
Operadores Lgicos y Relacionales

Para el mejor entendimiento de las estructuras revisaremos cada una con un


ejemplo.
LA ESTRUCTURA IF ELSE
void main()

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

{
float a, b;
printf("\nEscribe el primer nmero a= ");
scanf("%f",&a);
printf("\nEscribe el segundo nmero b= ");
scanf("%f",&b);
if (a==b){ printf ("\nLos dos nmeros son iguales\n");}
if (a!=b) {printf("\nLos dos nmeros son distintos\n");}
if (a>b) printf("\nEl nmero %f es mayor que %f\n ",a,b);
else printf("\nEl nmero %f no es mayor que %f\n",a,b);
if ((a>b) && (100>a))
{
printf("\nEl nmero %f es mayor que %f ",a,b);
printf("\nAdems los dos son menores de 100");
}
else
{
printf("\nEl nmero %f no es mayor que %f ",a,b);
printf(" O uno de los dos nmeros es mayor de 100");
}
}

Estudio del programa:

Observa el uso de los operadores relacionales y lgicos:

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

(a == b) a igual a b
(a != b) a diferente a b
((a>b) && (100>a))
a es mayor que b y adems 100 es mayor que a
Observa tambin que cada relacin hemos de encerrarla entre parntesis.

Estructura de programacin IF-ELSE

Observa en primer lugar la sintxis diferente entre los 4 IF del programa:


Los 2 primeros son iguales y ms simples: IF (condicin) sentencia;
Que quiere decir: Si se cumple la condicin se ejecutar la sentencia.
El tercer IF:
IF (condicin) sentencia1 ;
else sentencia2 ;
Que quiere decir: Si se cumple la (condicin) se ejecutar la sentencia1, en
caso contrario se ejecutar la sentencia2.
El cuarto IF es el ms completo:
IF (condicin)
{
sentencia1;
sentencia2;
}
else
{
sentencia3;
sentencia4;
FICSA|U.N.P.R.G.

Columnas Concreto Armado I

}
Que quiere decir: Si se cumple la condicin se ejcutar la sentencia1 y la
sentencia2, en caso contrario se ejecutar la 3 y la 4.
La Estructura WHILE
void main()
{
int x;
x=0;
while (x<6)
{
printf("\nEl valor de x es %d ",x);
x=x+1;
}
}

Estructura de programacin WHILE:

Que quiere decir: mientras se cumpla la condicin, ejecuta las sentencias que
hay entre llaves.
Observemos nuestro programa:
1) Definimos una variable entera (int) de nombre: x

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

2) Inicializamos el valor de la variable x a 0


3)
while (x<6)
{
printf("\nEl valor de x es %d ",x);
x=x+1;
}
Es decir: Mientras el valor de la variable x sea inferior al nmero 6
Escribe en pantalla el valor de x
El valor de x es igual al anterior valor de x pero + 1
CONTADORES

i++
j--

Es equivalente a escribir i=i+1


Es equivalente a escribir j=j-1

La Estructura de Programacin FOR


void main()
{
int x;
for(x=1;x<=10;x++)
{
printf("\nEstructura FOR ");
printf("Ahora x= %d",x);
}
}

La Estructura FOR:
FICSA|U.N.P.R.G.

Columnas Concreto Armado I

for(valor inicial,valor final,incrementador)


{
sentencia 1;
sentencia 2;
-------------;
-------------;
}
Que quiere decir: Repite la ejecucin de las sentencias de programa que hay
encerradas entre llaves, tantas veces como te indico en valor inicial, valor
final, paso.

for(x=1;x<=10;x=x+1)

Las lneas de programa de nuestro for se repetiran: desde x=1 hasta x=10 de 1
en 1, es decir 10 veces.
Si escribiramos: for(x=23;x<=76;x=x+4), querra decir: repite las lneas de
programa desde x=23 hasta x=76 de 4 en 4.
La estructura de programacin do while
void main()
{
int x=0;
do{
x=x+1;
printf("\nEl valor de x es %d ",x);
}while(x<=6);
}

Estructura de do-while
FICSA|U.N.P.R.G.

Columnas Concreto Armado I

do {
sentencia 1;
sentencia 2;
-----------} while(condicin)

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

EJERCICIO DE APLICACIN N1
Para la seccion de la columna que se muestra en la figura, determine los
siguientes puntos del diagrama nominal de interaccion:
a) carga concentrica.
b) condicion balanceada.
c) un punto de falla en la zona de fluencia del acero en traccion.
Ast = 8 5/8
fc= 350 Kg/cm2
fy= 4200 Kg/cm2
Estribos 3/8

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

DIAGRAMA DE FLUJO
INICIO

Introducir las libreras stdio.h, math.h


Declarar las variables necesarias:
int i,j......
float Mb[10][3], ,fc,fy......

Columna Rectangular

Datos de inicio

Mb[1][1]=3
Mb[2][1]=4
Mb[3][1]=5

Ingresar:
-fc: (fc)-Dimensin menor de columna
-fy: (fy)-Dimensin mayor de columna
-Ejes de acero: ejes

f=barra -2
Acero=Mb[f][3]
Ast= 0

i=0

FICSA|U.N.P.R.G.

no

i<eje

Columnas Concreto Armado I

Cantidad de acero linea i+1 : n[i]


Distancia de centro de acero a capa superior :dn[i]

As[i]=Acero*n[i]

Ast=Ast+As[i]

i=i+1

Condicion carga concentrada

Ag=bw*h

Pno=(0.85*fc*(Ag-Ast)+Ast*fy)/100

Area total : Ast


Area concreto : Ag
Resistencia nominal : Pno

Condicion balanceada

ey=fy/2000000
eb=6000*D/(6000+fy)
B1=0.85-(0.05-(fy-280))/70
a=0.8*cb

Mostrar:
-Cb
-B1
-a

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

i=0

no

i<eje
si
fs[i]= 6*(cb-d[i])/cb

fs[i+1]= fs[i]

no

fs[i]>4.2

si
fs[i]=4.2

no

fs[i]<-4.2

si
fs[i]=-4.2

i=i+1

Clculo de fuerzas

i=0

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

no

i<eje
si
F[i]=As[i]*fs[i]

Mostrar: F[i]

no

F[i]>0

si
Compresin

no

F[i]<0

si
Tensin

i=i+1

Cc=0.85*fc*bw*a/1000
Pnb=Cc

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

i=0

no

i<eje
si
Pnb=Pnb+F[i]

i=i+1

Pnb

num=Ag*0.85*fc*h/2
den=Ag*0.85*fc

i=0

no

i<eje
si
num=num+As[i]*d[i]*fy
den=den+As[i]*fy

i=i+1

Yo=num/den

Yo

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

Mnb=Cc*(Yo-a/2)/100

i=0

no

i<eje
si

Mnb=Mnb +(F[i]*(Yo-d[i]))/100

i=i+1

Mnb

eb=Mnb/Pnb

eb

FIN

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

PROGRAMACION EN C++

Para programar en Visual C++, damos doble clic en el cono de Microsoft


Visual C++ 2008.

Luego nos muestra la siguiente pantalla:

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

Para crear un C + + Application Console, haga clic en Archivo | Nuevo |


Proyecto.

El siguiente cuadro de dilogo aparece. Expanda el men de Visual C + + y


seleccione una de las plantillas a la izquierda el Aplicacin de consola Win32,
luego en la casilla nombre ingresar el nombre para el proyecto.

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

Haga clic en Aceptar. Se crear una carpeta con el nombre asignado en la carpeta
Mis documentos \ Visual Studio 2008 \ Projects.
Aparece el siguiente cuadro de dilogo:

Haga click en siguiente para continuar. Luego en el siguiente cuadro que


aparece seleccionar la opcin Aplicacin de consola y luego click en
finalizar.

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

Ahora si ingresamos los comandos de nuestro programa:


#include "stdafx.h"
#include "stdio.h"
#include "math.h"
int _tmain(int argc, _TCHAR* argv[])
{
float
fc,fy,bw,h,Mb[11][3],B1,dc,D,Pno,Ag,Ast,Acero,As[10],d[10],ey,cb,a,fs[10]
,F[10],Cc,num,den,Mnb,yo,eb,Pnb;
int i,j,f,o,eje,n[6],barra;
printf("
printf("
printf("

\t\n");
\t
COLUMNA RECTANGULAR
\n");
\t \n");

printf("\n DATOS DE INICIO: ");


printf("\n ~~~~~~~~~~~~~~~~ \n");
Mb[1][1]=3; Mb[1][2]=0.95; Mb[1][3]=0.71;
Mb[2][1]=4; Mb[2][2]=1.27; Mb[2][3]=1.27;
Mb[3][1]=5; Mb[3][2]=1.59; Mb[3][3]=1.98;
Mb[4][1]=6; Mb[4][2]=1.91; Mb[4][3]=2.85;
Mb[5][1]=7; Mb[5][2]=2.22; Mb[5][3]=3.88;
Mb[6][1]=8; Mb[6][2]=2.54; Mb[6][3]=5.07;
Mb[7][1]=9; Mb[7][2]=2.86; Mb[7][3]=6.41;
Mb[8][1]=10;Mb[8][2]=3.18; Mb[8][3]=7.92;
Mb[9][1]=11;Mb[9][2]=3.49; Mb[9][3]=9.58;
Mb[10][1]=12;Mb[10][2]=3.81; Mb[10][3]=11.4;
printf("\n\n * fc (kg/cm2): ");
scanf("%f",&fc);
printf("\n * fy (kg/cm2): ");
scanf("%f",&fy);
printf("\n * dimension menor de columna (cm): ");
scanf("%f",&bw);
printf("\n * dimension mayor de columna: ");
scanf("%f",&h);
printf("\n * d efectivo: ");
scanf("%f",&D);
printf("\n *Ejes horizontales en la columna: ");
scanf("%d",&eje);
printf("\n\n N barra de acero: ");
scanf("%d",&barra);
f=barra-2;
Acero=Mb[f][3];
Ast=0;
printf("\n\n
=================================================================");

FICSA|U.N.P.R.G.

Columnas Concreto Armado I


for(i=0;i<eje;i++)
{
printf("\n\n **Cantidad de aceros para la la linea %d linea:
",i+1);
scanf("%d",&n[i]);
printf("\n **Distancia del centro de acero eje superior (cm):
");
scanf("%f",&d[i]);
As[i]=Acero*n[i];
printf("\n // Area de acero en la linea %d:
%0.2f",i+1,As[i]);
Ast=Ast+As[i];
printf("\n\n
=================================================================");
}
printf("\n\n ||Condicion de carga concentrada|| ");
printf("\n \n");

printf("\n . El acero total es:%0.2f cm2",Ast);


Ag=bw*h;
printf("\n . El area de concreto es (%0.2f * %0.2f):%0.2f
cm2",bw,h,Ag);
Pno=(0.85*fc*(Ag-Ast)+Ast*fy)/1000;
printf("\n\n La resistencia nominal a la carga axial de la columna
es: %0.2f T",Pno);
printf("\n\n---------------------------------------------------------------------------");
printf("\n\n ||Condicion Balanceada|| ");
printf("\n \n");
ey=fy/2000000;
cb=(6000/(6000+fy))*D;
printf("\n\n El valor de cb es: %0.2f ",cb);
B1=0.85-(0.05*(fc-280))/70;
printf("\n\n El valor de B1 es: %0.2f ",B1);
a=0.8*cb;
printf("\n\n El valor de a es: %0.2f cm",a);
for(i=0;i<eje;i++)
{
fs[i]=6*(cb-d[i])/cb;

FICSA|U.N.P.R.G.

Columnas Concreto Armado I


printf("\n\n fs[%d]= %0.2f T/cm2",i+1,fs[i]);
if(fs[i]>4.2)
{
fs[i]=4.2;
printf(" => fs[%d]=%0.2f T/cm2",i+1,fs[i]);
}
if(fs[i]<-4.2)
{
fs[i]=-4.2;
printf(" => fs[%d]=%0.2f T/cm2",i+1,fs[i]);
}
}
printf("\n\n Calculo de fuerzas en el concreto");
printf("\n :::::::::::::::::::::::::::::::::");
for(i=0;i<eje;i++)
{
F[i]=As[i]*fs[i];
printf("\n F[%d]= %0.2f T",i+1,F[i]);
if(F[i]>0)
{
printf(" (Compresion)");
}
if(F[i]<0)
{
printf(" (Tension)");
}
}
Cc=0.85*fc*bw*a/1000;
printf("\n Cc= %0.2f T",Cc);
Pnb=Cc;
for(i=0;i<eje;i++)
{
Pnb=Pnb+F[i];
}
printf("\n Pnb= %0.2f T",Pnb);
num=Ag*0.85*fc*(h/2);
den=Ag*0.85*fc;
for(i=0;i<eje;i++)
{
num=num+As[i]*d[i]*fy;
den=den+As[i]*fy;
}
yo=(num/den);
printf("\n\n El valor de yo es: %0.2f cm",yo);
Mnb=Cc*(yo-a/2)/100;

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

for(i=0;i<eje;i++)
{
Mnb=Mnb+(F[i]*(yo-d[i])/100);
}
printf("\n\n El valor de Mnb es: %0.2f T-m",Mnb);
eb=Mnb/Pnb;
printf("\n\n El valor de la excentricidad balanceada: %0.2f
m",eb);

printf("\n Oprima 0 para salir: ");


scanf("%d",&o);
return 0;
}

EJECUCION DEL PROGRAMA

DATOS DE INGRESO AL PROGRAMA

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

INGRESAMOS CANTIDAD DE ACERO POR GRUPO Y SU d

RESULTADOS FINALES

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

EJERCICIO DE APLICACIN N2
Para la seccion de la columna que se muestra en la figura, determine la capacidad
nominal de carga axial y de momento para una excentricidad de e=1.5e b.
Consideraciones: AB en traccion:
Ast = 3 N9
fc= 420Kg/cm2
fy= 3500 Kg/cm2
Estribos 3/8

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

DIAGRAMA DE FLUJO
INICIO

Declaracin de libreras y variables


"stdafx.h" "stdio.h" "math.h"
float
Mb[10][3],e,eb,fc,fy,estribo,b,h,A,x,dacero,d2,r
ecb,As1,As2,res,sen,d1,B1,a,cb,fs1,fs2,Fs1,Fs2,C
c,yo,Ag,Pnb,Mnb;
int i,o,j,k,barillas,barillae

Datos de inicio:
Fc, fy,b,h,recubrimiento(recb)

Ingreso de N de barra para acero: varillas

No
varillas<=2||
varillas>=13

Si
No existe N de barra ingresado

varillas<=2||
varillas>=13

Si
FICSA|U.N.P.R.G.
Ingreso de N de barra para estribo: varillae
No

Columnas Concreto Armado I

No

varillae<=2||
varillae>=13

Si
barillae<=2||
barillae>=13

No
Mb[1][1]=3;Mb[1][2]=0.95;Mb[1][3]=0.71;
Mb[2][1]=4Mb[2][2]=1.27;Mb[2][3]=1.27;
Mb[3][1]=5; Mb[3][2]=1.59; Mb[3][3]=1.98
Mb[4][1]=6; Mb[4][2]=1.91; Mb[4][3]=2.85;
Mb[5][1]=7; Mb[5][2]=2.22; Mb[5][3]=3.88;
Mb[6][1]=8; Mb[6][2]=2.54; Mb[6][3]=5.07;
Mb[7][1]=9; Mb[7][2]=2.86; Mb[7][3]=6.41;
Mb[8][1]=10;Mb[8][2]=3.18; Mb[8][3]=7.92;
Mb[9][1]=11;Mb[9][2]=3.49; Mb[9][3]=9.58;
Mb[10][1]=12;Mb[10][2]=3.81; Mb[10][3]=11.4;
i=barillas-2;
dacero=Mb[i][2];
A=Mb[i][3];
j=barillae-2;
estribo=Mb[j][2];

3 Barillas de dacero cm de diametro y


estribos de estribos cm de diametro

FICSA|U.N.P.R.G.

Columnas Concreto Armado I


Ag=b*h/2;
d2=h-(recb+estribo+dacero/2);
As1=A;
As2=2*A;
res=recb+estribo+dacero/2;
sen=sin(atan((b/2)/h));
x=res/sen;
d1=x;
yo=(Ag*0.85*fc*(2*h/3)+As1*fy*d1+As2*fy*d2)/(Ag*0.85
*fc+As1*fy+As2*fy)
cb=(6000/(6000+fy))*d2
B1=0.85-(0.05*(fc-280))/70; a=B1*cb
Cc=0.85*(fc/1000)*(b/(2*h))*a*a
fs1=6*(cb-d1)/cb; Fs1=fs1*As1
fs2=6*(cb-d2)/cb; Fs2=fs2*As2
Pnb=Cc+Fs1+Fs2
Mnb=(Cc*(yo-(2*a/3))+Fs1*(yo-d1)+Fs2*(yo-d2))/100;
eb=Mnb/Pnb
e=1.5*eb

Peralte efectivo de la primera capa: d1


Peralte efectivo de la segunda capa: d2
Centroide plstico: yo
Cb
Coeficiente B1
Altura de fuerza equivalente: a
Fuerza de compresion de concreto: Cc
Fuerzas en los acero: Fs1 y Fs2
Carga axial nominal en columna: Pnb
Momento nominal en la columna: Mnb
Excentricidad balanceada: eb
Excentricidad: e

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

SI
Introducir nuevo valor de c: cb

K==1

NO

a=B1*cb
Cc=0.85*(fc/1000)*(b/(2*h))*a*a

FIN

fs1=6*(cb-d1)/cb;
Fs1=fs1*As1
fs2=6*(cb-d2)/cb;
Fs2=fs2*As2
PROGRAMACION EN C++
Pnb=Cc+Fs1+Fs2
Mnb=(Cc*(yo-(2*a/3))+Fs1*(yo-d1)+Fs2*(yo-d2))/100
eb=Mnb/Pnb

FICSA|U.N.P.R.G.

Columnas Concreto Armado I

PROGRAMACIN EN C++
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
int _tmain(int argc, _TCHAR* argv[])
{
float
Mb[10][3],e,eb,fc,fy,estribo,b,h,A1,A2,x,dacero1,dacero2,d2,recb,As1,As2,
res,sen,d1,B1,a,cb,fs1,fs2,Fs1,Fs2,Cc,yo,Ag,Pnb,Mnb;
int i,o,j,k,varillas1,varillas2,varillae;
printf("
printf("
printf("

\t\n");
\t
COLUMNA TRIANGULAR
\n");
\t \n");

printf("\n DATOS DE INICIO ");


printf("\n --------------- \n");
printf("\n\n [1] f'c kg/cm2=");
scanf("%f",&fc);
printf("\n [2] fy kg/cm2= ");
scanf("%f",&fy);
printf("\n [3] b cm= ");
scanf("%f",&b);
printf("\n [4] h cm= ");
scanf("%f",&h);
printf("\n [5] recubrimiento cm= ");
scanf("%f",&recb);
do
{
printf("\n */ Numero de barra para el acero (para el
vertice superior)= ");
scanf("%d",&varillas1);
if((varillas1<=2)||(varillas1>=13))
{
printf("\n No existe Barra N. %d",varillas1);
}
}while((varillas1<=2)||(varillas1>=13));
do
{
printf("\n */ Numero de barra para el acero (en la base
del triangulo)= ");
scanf("%d",&varillas2);
if((varillas2<=2)||(varillas2>=13))
{
printf("\n No existe Barra N. %d",varillas2);

FICSA|U.N.P.R.G.

Columnas Concreto Armado I


}
}while((varillas2<=2)||(varillas2>=13));
do
{
printf("\n */ Numero de barra para el estribo= ");
scanf("%d",&varillae);
if((varillae<=2)||(varillae>=13))
{
printf("\n No existe Barra N. %d",varillae);
}
}while((varillae<=2)||(varillae>=13));
Mb[1][1]=3; Mb[1][2]=0.95; Mb[1][3]=0.71;
Mb[2][1]=4; Mb[2][2]=1.27; Mb[2][3]=1.27;
Mb[3][1]=5; Mb[3][2]=1.59; Mb[3][3]=1.98;
Mb[4][1]=6; Mb[4][2]=1.91; Mb[4][3]=2.85;
Mb[5][1]=7; Mb[5][2]=2.22; Mb[5][3]=3.88;
Mb[6][1]=8; Mb[6][2]=2.54; Mb[6][3]=5.07;
Mb[7][1]=9; Mb[7][2]=2.86; Mb[7][3]=6.41;
Mb[8][1]=10;Mb[8][2]=3.18; Mb[8][3]=7.92;
Mb[9][1]=11;Mb[9][2]=3.49; Mb[9][3]=9.58;
Mb[10][1]=12;Mb[10][2]=3.81; Mb[10][3]=11.4;
printf("\n:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
");
printf("\n\nAcero usado");
i=varillas1-2; /*eleccion de la fila para caracteristicas del acero
en el vertice superior*/
dacero1=Mb[i][2]; //diametro de acero
A1=Mb[i][3]; //area de acero
i=varillas2-2; /*eleccion de la fila para caracteristicas del acero
en la base*/
dacero2=Mb[i][2]; //diametro de acero
A2=Mb[i][3]; //area de acero
j=varillae-2;
estribo=Mb[j][2]; //diametro de estribo
printf("\n 1 Varilla de %0.2f cm de diametro,2 Varilla de %0.2f cm
de diametro y estribos de %0.2f cm de diametro",dacero1,dacero2,estribo);

printf("\n:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
");

Ag=b*h/2; //area de concreto


d2=h-(recb+estribo+dacero2/2); //distancia de vertice de columna
hasta la capa de acero opuesto

FICSA|U.N.P.R.G.

Columnas Concreto Armado I


As1=A1; //area de acero en el vertice superior
As2=2*A2; //area de acero en la base del triangulo
res=recb+estribo+dacero1/2; //perpendicular desde un lado del
triangulo hasta el centroide de la barra de acero en el vertice
sen=sin(atan((b/2)/h)); //seno del angulo: la mitad del angulo del
vertice superior
x=res/sen; //distancia del vertice superior al centroide del acero
en el vertice superior
d1=x;
printf("\n d1= %0.2f cm",d1);
printf("\n d2= %0.2f cm",d2);
yo=(Ag*0.85*fc*(2*h/3)+As1*fy*d1+As2*fy*d2)/(Ag*0.85*fc+As1*fy+As2*
fy); //centroide plastico del triangulo
printf("\n\n yo= %0.2f cm",yo);
cb=(6000/(6000+fy))*d2; //condicion balanceada
printf("\n\n cb= %0.2f",cb);
////////////////////////////////////////////////////////
B1=0.85-(0.05*(fc-280))/70;
if(B1<0.65)
{
B1=0.65;
}
if(B1>0.85)
{
B1=0.85;
}
printf("\n B1= %0.2f ",B1);
a=B1*cb; //altura de rectangulo de fuerza equivalente
printf("\n a= %0.2f cm",a);
Cc=0.85*(fc/1000)*(b/(2*h))*a*a; //fuerza de compresion del
concreto
printf("\n Cc= %0.2f T",Cc);
fs1=6*(cb-d1)/cb;
if(fs1<(-fy/1000))
{
fs1=-fy/1000;
}
if(fs1>(fy/1000))
{
fs1=fy/1000;
}
Fs1=fs1*As1;
printf("\n\n f1= %0.2f T/cm2 => Fs1= %0.2f T",fs1,Fs1);
if(Fs1<0)
{
printf("(Traccin)");
}

FICSA|U.N.P.R.G.

Columnas Concreto Armado I


else
{
printf("(Compresion)");
}
fs2=6*(cb-d2)/cb;
if(fs2<(-fy/1000))
{
fs2=-fy/1000;
}
if(fs2>(fy/1000))
{
fs2=fy/1000;
}
Fs2=fs2*As2;
printf("\n\n f2= %0.2f T/cm2 => Fs2= %0.2f T",fs2,Fs2);
if(Fs2<0)
{
printf("(Traccin)");
}
else
{
printf("(Compresion)");
}

Pnb=Cc+Fs1+Fs2; //fuerza axial


printf("\n\n Pnb= %0.2f T",Pnb);
Mnb=(Cc*(yo-(2*a/3))+Fs1*(yo-d1)+Fs2*(yo-d2))/100; //momento
nominal en la columna
printf("\n\n Mnb= %0.2f T-m",Mnb);
eb=Mnb/Pnb;
printf("\n\n eb= %0.2f m",eb);
e=1.5*eb;
printf("\n\n excentricidad= %0.2f m",e);
printf("\n:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
");
do
{
printf(" \n\nintroducir c: ");
scanf("%f",&cb);
a=B1*cb;
printf("\n a= %0.2f cm",a);
Cc=0.85*(fc/1000)*(b/(2*h))*a*a;
printf("\n Cc= %0.2f T",Cc);
fs1=6*(cb-d1)/cb;
if(fs1<(-fy/1000))
{

FICSA|U.N.P.R.G.

Columnas Concreto Armado I


fs1=-fy/1000;
}
if(fs1>(fy/1000))
{
fs1=fy/1000;
}
Fs1=fs1*As1;
printf("\n\n f1= %0.2f T/cm2 => Fs1= %0.2f T",fs1,Fs1);
if(Fs1<0)
{
printf("(Traccin)");
}
else
{
printf("(Compresion)");
}
fs2=6*(cb-d2)/cb;
if(fs2<(-fy/1000))
{
fs2=-fy/1000;
}
if(fs2>(fy/1000))
{
fs2=fy/1000;
}
Fs2=fs2*As2;
printf("\n\n f2= %0.2f T/cm2 => Fs2= %0.2f T",fs2,Fs2);
if(Fs2<0)
{
printf("(Traccin)");
}
else
{
printf("(Compresion)");
}
Pnb=Cc+Fs1+Fs2;
printf("\n\n Pnb= %0.2f T",Pnb);
Mnb=(Cc*(yo-(2*a/3))+Fs1*(yo-d1)+Fs2*(yo-d2))/100;
printf("\n\n Mnb= %0.2f T-m",Mnb);
eb=Mnb/Pnb;
printf("\n\n eb= %0.2f m",eb);
printf("\n diferencia: de las excentricidas es %0.2f",e-eb);

printf("\n\n Desea seguir? 1)Si


scanf("%d",&k);

2)No/ su

opcion es: ");

FICSA|U.N.P.R.G.

Columnas Concreto Armado I


printf("\n:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::");
}while(k==1);

printf("\n presiones 0");


scanf("%d",&o);

return 0;
}

FICSA|U.N.P.R.G.