SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: bones.felipe en Sábado 10 de Diciembre de 2011, 06:29
-
buenas a todos,
soy nuevo por aqui y en c++ espero me puedan ayudar :D, tengo este codigo un poco largo xD, y al ejecutar las opciones 2 y 3 del switch al final cuando el programa intenta salir este se cierra inesperadamente (estoy trabajando en dev), al depurarlo me sale este aviso: "se ha producido una violacion de acceso a memoria", no se q pueda estar pasando por que sin el switch corre perfectamente, pero al ponerlo se daña.
les agradezco su ayuda!
:ayuda:
#include <cstdlib>
#include <iostream>
using namespace std;
int series (int n) {
int i=0 ,a,b,temp=0;
cout<<"introduzca el inicio de todas las series"<<endl;
cin>>b;
cout<<"introduzca el tope para todas las series "<<endl;
cin>>a;
cout<<endl<< "Serie de Impares :"<<endl<<endl;
if(b % 2 == 0){
for(temp=b+1;temp<a;temp=temp+2) { //serie de impares
cout<<temp<<", " ;
}
if(a % 2 ==! 0){
cout<<a<<endl;
}
}
else
{
for(temp=b;temp<a;temp=temp+2) { //serie de impares
cout<<temp<<", " ;
}
if(a % 2 ==! 0){
cout<<a<<endl;
}
}
cout<<endl<<endl<<"Serie de Pares :" <<endl<<endl;
if (b % 2 == 0) {
for (temp=b;temp<a;temp=temp+2){ // Serie de Pares
cout<<temp<<", " ;
}
if(a % 2 == 0){
cout<<a<<endl;
}
}
else {
for (temp=b+1;temp<a;temp=temp+2){ // Serie de Pares
cout<<temp<<", " ;
}
if(a % 2 == 0){
cout<<a<<endl;
}
}
cout<<endl<<endl<<"Serie de Cuadrados :" <<endl<<endl;
for (i=b;i<=a;i++){ // Serie De cuadrados
temp=i;
temp=temp*temp;
cout<<temp<<", " ;
}
cout<<endl<<endl<<"Serie de Cubos :" <<endl<<endl;
for (i=b;i<=a;i++){
temp=i;
temp=temp*temp*temp;
cout<<temp<<", " ;
}
}
void serie (int num){ //serie de numeros
int num2,i;
num2=0;
for(i=1; i<=num; i++){
num2=i+num2;
cout<<num2<<" ";
}
cout<<endl;
}
int fib (int a, int b) { // Serie de Fibonacci
int i,c,d=0,e=1 ;
if (a==0 && b==1){
cout<<"0 , 1"<<endl;
}
while(c != a){
c=d+e;
e=d;
d=c;
}
cout<<a<<" , ";
while(c != b){
c = d+e ;
e=d ;
d=c;
cout<<c<<" , ";
}
}
void inv (char p[], int n){
char e;
int i,j,cont=1,a;
a=n/2;
for (i=0;i<n;i++){
cout<<endl<<"Por favor introduzca el caracter de la posicion "<<i<<endl;
cin>>p[i];
}
for (i=0;i<n;i++){
cout<<p[i]<<" ";
}
for (i=0; i<a;i=i+1){
e=p[i];
p[i]=p[n-cont];
p[n-cont]=e;
cont=cont+1;
}
cout<<endl<<"la matriz invertida es:"<<endl;
for (i=0;i<n;i++){
cout<<p[i]<<" ";
}
}
int factorial ( int c ) { //Factorial
int a,b,i ;
a=1;
for(i=1;i<=c;i++){
a=a*i;
}
c=a;
}
int pasca (int nivel){ //pascal
long int a,b,d,i,e ;
cout<<endl<<endl;
a=nivel;
cout<<" 1"<<endl;
for (i=1;i<=nivel;i++){
for(b=0;b<=nivel;b++) {
d = (factorial(i))/((factorial(i-b))*(factorial(b)));
cout<<" "<<d;
}
cout<<endl;
}
}
int rep (int n,int m) { //encontrar repeticiones de caracter, y sus posiciones.
int k[n],i,x=0,y;
for(i=0;i<n;i++) {
cout<<"ingrese el caracter de la posicion "<<i<<endl;
cin>>k[i];
}
cout<<endl<<"Hay repeticiones del caracter '"<<m<<"' "<<"en las posiciones " ;
for(i=0;i<n;i++){
if(k[i] == m){
x=x+1;
cout<<i<<", ";
}
}
cout<<endl<<"y se repitio "<<x<<" veces"<<endl<<endl ;
}
void orden (char p[], int n){
int temp,i,j;
cout<<endl<<"Usted Introdujo La matriz: "<<endl;
for (i=0;i<n;i++){
cout<<p[i]<<" ";
}
for (int i=1; i<n; i++){
for (int j=0 ; j<n-1; j++){
if (p[j] > p[j+1]){
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
cout<<endl<<"Matriz Ordenada:"<<endl;
for (i=0;i<n;i++){
cout<<p[i]<<" ";
}
}
void mat1 (int m , int n) { //organizar matrices de derecha a izquierda y de abajo hacia arriba
int mat[m][n];
int i,j,c=0;
for(i=m-1;i>=0;i--){
for(j=n-1;j>=0;j--){
mat[i][j]=c;
c=c+1;
}
}
cout<<endl<<"organizar matrices de derecha a izquierda y de abajo hacia arriba"<<endl;
for(i=0;i<m;i++){
cout<<endl;
for (j=0;j<n;j++){
cout<<mat[i][j] <<"\t";
}
}
cout<<endl;
}
void car1(int a, int b){
int x[a][b], num=0,i,j;
for(int i=0; i<a; i++){
for(int j=0; j<b; j++){
x[i][j]=num;
num=num+1;
}
}
cout<<endl<<endl<<"Organizar por filas de izquierda a derecha y de arriba hacia abajo"<<endl;
for (i=0; i<a; i++){
cout << endl;
for (j=0; j<b; j++){
cout << x[i][j] << "\t";
}
}cout << endl;
}
void mat2 (int m , int n) { //Por Columnas de derecha izquierda y de abajo hacia arriba
int mat2 [m][n] ;
int a=0,i,j;
for(i=0;i<n;i++){
for(j=m-1;j>=0;j--){
mat2[j][i]=a;
a=a+1;
}
}
cout<<endl<<"organizar matrices Por Columnas de derecha izquierda y de abajo hacia arriba"<<endl;
for (i=0;i<m;i++){
cout<<endl;
for(j=0;j<n;j++){
cout<<mat2[i][j]<<" \t";
}
}
}
void car2 (int a, int b){
int e[a][b], h=0,i,j;
for (j=0; j<b; j++){
for (i=0; i<a; i++){
e[i][j]=h;
h=h+1;
}
}
cout<<endl<<"ordenar por Columnas de izquierda a derecha de arriba hacia abajo"<<endl;
for (int i=0; i<a; i++){
cout << endl;
for (int j=0; j<b; j++){
cout << e[i][j] << "\t";
}
}cout << endl;
}
void mat3 (int m, int n) { // las posiciones por encima de la diagonal con 1
int mat[m][n] ,i,j,a=1;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
mat[i][j]=0;
}
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(j>i){
mat[i][j]=a;
a=a+1;
}
}
}
cout<<endl<<endl<<"organizar las posiciones por encima de la diagonal con enteros desde 1 "<<endl;
cout<<endl;
for (i=0;i<m;i++){
cout<<endl;
for(j=0;j<n;j++){
cout<<mat[i][j]<<" ";
}
}
}
void mat6 (int m, int n) { // Los posiciones debajo de la diagonal principal con números enteros negativos comenzando en -1
int mat[m][n] ,i,j,a=-1;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
mat[i][j]=2;
}
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(j<i){
mat[i][j]=a;
a=a-1;
}
}
}
cout<<endl<<endl<<"organizar las posiciones por debajo de la diagonal con numeros negativos empezando en -1 "<<endl;
cout<<endl;
for (i=0;i<m;i++){
cout<<endl;
for(j=0;j<n;j++){
cout<<mat[i][j]<<" ";
}
}
}
void mat4 (int m , int n){ // diagonal prinicipal con los multiplpos de 5
int mat[m][n] ,i,j,a=1;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
mat[i][j]=0;
}
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(i==j){
mat[i][j]=a;
a=a*5;
}
}
}
cout<<endl<<endl<<"diagonal prinicipal con los multiplpos de 5 "<<endl;
cout<<endl;
for (i=0;i<m;i++){
cout<<endl;
for(j=0;j<n;j++){
cout<<mat[i][j]<<" ";
}
}
}
void mat8 (int m , int n){ // diagonal prinicipal con los multiplpos de 5
int mat[m][n] ,i,j,a=3;
srand(time(0));
for(i=0;i<m;i++){
for(j=0;j<n;j++){
mat[i][j]=rand()%50;
}
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(i+j==n-1){
mat[i][j]=a;
a=a*3;
}
}
}
cout<<endl<<endl<<"diagonal opuesta a la diagonal principal con multiplos de 3 "<<endl;
cout<<endl;
for (i=0;i<m;i++){
cout<<endl;
for(j=0;j<n;j++){
cout<<mat[i][j]<<" ";
}
}
}
int mat5 (int m, int n, int &c){ //suma de los elementos de la matriz
int mat[m][n],i,j,d,a=0;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
mat[i][j]=a;
a=a+1;
}
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
d=mat[i][j];
c=c+d;
}
}
}
int mat7 (int m, int n){ //suma de las filas
int mat [m][n], a=0,b=0,i,j;
for(i=0;i<=m;i++){
for(j=0;j<n;j++){
mat[i][j]=a;
a=a+1;
}
}
cout<<endl<<endl<<endl<<"suma de las filas "<<endl;
cout<<endl;
for (i=0;i<m;i++){
cout<<endl;
for(j=0;j<n;j++){
cout<<mat[i][j]<<"\t";
}
}
cout<<endl;
for(i=0;i<=m-1;i++){
b=0;
for(j=n-1;j>=0;j--){
if(i == 2){
b=mat[j][i]+b;
}
else
{
b=b+mat[i][j];
}
}
cout<<" la suma de los elementos de la fila: "<<i<<" es "<<b<<endl;
}
}
int mat9 (int m, int n){ //resta de los elementos de las columnas de abajo hacia arriba
int mat [m][n], a=0,b=0,i,j;
for(i=0;i<=m;i++){
for(j=0;j<n;j++){
mat[i][j]=a;
a=a+1;
}
}
cout<<endl<<endl<<endl<<"resta de los elementos de las columnas de abajo hacia arriba "<<endl;
cout<<endl;
for (i=0;i<m;i++){
cout<<endl;
for(j=0;j<n;j++){
cout<<mat[i][j]<<" ";
}
}
cout<<endl;
for(i=0;i<=n-1;i++){
b=0;
for(j=m-1;j>=0;j--){
if(j == m-1){
b=mat[j][i]-b;
}
else
{
b=b-mat[j][i];
}
}
cout<<" la resta de los digitos de abajo hacia arriba de la columna : "<<i<<" es "<<b<<endl;
}
}
int mat10 (int m, int n){ //multiplicacion de las columnas en un vector
int mat [m][n], a=0,b=1,i,j, vec[m],o=0;
for(i=0;i<=m;i++){
for(j=0;j<n;j++){
mat[i][j]=a;
a=a+1;
}
}
cout<<endl<<endl<<endl<<"multiplicacion de las columnas y guardarlas en un vector "<<endl;
cout<<endl;
for (i=0;i<m;i++){
cout<<endl;
for(j=0;j<n;j++){
cout<<mat[i][j]<<" ";
}
}
cout<<endl;
for(i=0;i<=n-1;i++){
b=1;
for(j=m-1;j>=0;j--){
if(j == m-1){
o=o+1;
b=mat[j][i]*b;
}
else
{
b=b*mat[j][i];
}
vec[o]=b;
}
cout<<" la multiplicacion de la columna : "<<i<<" es "<<vec[o]<<endl;
}
}
int fibon (int a){
int x;
if(a==0||a==1){
x=a;
}
else
{
x=fibon(a-1)+ fibon(a-2);
}
return (x);
}
int fc (int n){
int x;
if(n==0){
x=1;
}
else{
x=n*fc(n-1);
}
return(x);
}
int mult ( int a, int b ){
int n ;
if(b==1){
n=a;
}
else
{
n=a+mult(a,b-1);
}
return(n);
}
int ex (int n, int m){
int x;
if(m==1){
x=n;
}
else{
x=n*ex(n, m-1);
}
return(x);
}
int main(int argc, char *argv[])
{
int var=0,a,b,num;
char x;
int s;
system ("cls");
cout<<endl<<"Por favor introduzca la opcion deseada"<<endl;
cout<<"Opcion (1) Algoritmos para aplicación de conceptos Basicos"<<endl;
cout<<"Opcion (2) Algoritmos con criterios de Simplicidad y Modularidad para el Manejo de Arreglos y Matrices "<<endl;
cout<<"Opcion (3) Implementación de Algoritmos Recursivos"<<endl;
cout<<"Opcion (4) Para salir a windows "<<endl;
cin>>s;
switch (s){
case 1 :
series (var);
cout<<endl<<endl<<"Escriba limite superior de la sucesion 1, 3, 6, 10, 15, 21, 28, 36, 45, ..."<<endl;
cin>>num;
serie(num);
cout<<endl<<endl<<"introduzca el intervalo de la sucesion de fibonacci" <<endl<<endl;
cin>>a ;
cin>>b ;
fib (a,b);
cout<<endl<<"Por favor introduzca el nivel maximo del triangulo de pascal"<<endl;
cin>>a;
pasca (a);
break;
case 2 :
cout<<"Por Favor digite la longitud de un vector dado"<<endl;
cin>>b;
char vector[b];
inv (vector, b);
cout<<endl<<endl<<"por favor digite el caracter a encontrar"<<endl;
cin>>a;
rep (b,a);
cout<<endl<<endl<<"Ordenacion del vector de menor a mayor de izquierda a derecha"<<endl;
orden (vector ,b);
cout<<endl<<"Por favor ingrese el tamaño de una matriz"<<endl;
cin>>a>>b;
mat1(a,b);
car1(a,b);
mat2(a,b);
car2(a,b);
mat3(a,b);
mat6(a,b);
mat8(a,b);
mat5(a,b,var);
mat7(a,b);
mat10(a,b);
break ;
case 3:
cout<<endl<<"Introduzca la posicion de la sucesion de fibonacci que desea"<<endl;
cin>>a;
b=fibon(a);
cout<<"El numero de la posicion "<<a<<" es : '"<<b<<"'"<<endl;
cout<<endl<<"Digite el numero el cual desea sacar el factorial"<<endl;
cin>>a;
b=fc(a);
cout<<"El factorial del numero "<<a<<" es "<<b<<endl;
cout<<endl<<"Introduzca los numeros a multiplicar"<<endl;
cin>>a>>b;
var = mult (a,b);
cout<<endl<<"El Resultado es : "<<var<<endl;
cout<<"Digite el numero base"<<endl;
cin>>a;
cout<<"Digite el numero exponente"<<endl;
cin>>b;
var=ex(a, b);
cout<<a<<" elevado a la "<<b<<" es igual a "<<var<<endl;
break ;
}
system("PAUSE");
return EXIT_SUCCESS;
}