Este programa te puede ser útil. Se compiló en turbo C++ y corre perfectamente. Aunque tiene cosas que tu no necesitas puedes tomar las dos primeras funciones que te sirve para solucionar tu problema. /*-------------------------------------------------------------- // PEDRO VICENTE ROSERO MONTAÑO // // Ingenier¡a Electr¢nica //-------------------------------------------------------------*/ #include<stdio.h> #include<conio.h> #include<string.h> void rectangulo(int, int, int, int, char[]); void vector1(void); void vector2(void); int posx = 15, posy = 5; int ancho = 30, alto = 15;void llenar(int v[20], int d) { for(int i=1;i<=d;i++) { printf("Insertar pos.[%d]: ",i); scanf("%d",&v); } } void mostrar(int v[20], int d) { for(int i=1;i<=d;i++) { printf("[%d]",v); } } int potencia (int b, int e) { int p=1; for(int i=1;i<=e;i++) { p=p*b; } return (p); } void evalua(int v[],int d, int x) { int s=0; for(int i=1;i<=d;i+=2) { s=s+(v*potencia(x,v[i+1])); } printf("\n\nx es igual a: %d",s); } void invierte (int V[], int d) { int aux1; int fin1=d/2; for(int i=1;i<=(d/2)/2;i++) { aux1=V; V = V[fin1]; V[fin1] = aux1; fin1--; } fin1=d; for(int j=(d/2)+1; j<=(d/2)+1; j++) { aux1=V[j]; V[j] = V[fin1]; V[fin1] = aux1; fin1--; } } // Funci¢n para dibujar el men£ void menu() { char opcion; clrscr(); rectangulo(posx, posy, ancho, alto, "Men£"); gotoxy(posx + 2, posy); //clrscr(); gotoxy(posx + 2, posy + 2); printf("1. Misteriosa inversi¢n"); gotoxy(posx + 2, posy + 4); printf("2. Evaluar un polinomio"); gotoxy(posx + 2, posy + 6); printf("3. Salir"); // Ciclo para esperar a que el usuario digite una opción do { gotoxy(posx + 2, posy+ 12); printf("Seleccione una opci¢n: "); opcion = getche(); } while (opcion != '1' && opcion != '2' && opcion != '3'); clrscr(); if (opcion == '1') vector1(); else if (opcion == '2') vector2(); } //----------------------------------- // Funci¢n para trazar un marco //----------------------------------- void rectangulo(int posx, int posy, int ancho, int alto, char titulo[30]) { int i; char texto[30] = ""; //textcolor(10); //asigna un color al texto for(i = 1; i <= ancho; i++) { gotoxy(posx + i, posy); printf("Í"); } gotoxy(posx + ancho, posy); printf("»"); for(i = 1; i <= alto; i++) { gotoxy(posx + ancho, posy + i); printf("º"); } gotoxy(posx + ancho, posy + alto); printf("¼"); for(i = ancho - 1; i >= 1; i--) { gotoxy(posx + i, posy + alto); printf("Í"); } gotoxy(posx, posy + alto); printf("È"); for(i = alto - 1; i >= 1; i--) { gotoxy(posx, posy + i); printf("º"); } gotoxy(posx, posy); printf("É"); gotoxy(posx + 2, posy); strcat(texto, " "); strcat(texto, titulo); strcat(texto, " "); printf(texto); //textcolor(15); } //-------------------------------------------------------------- // Dado un vector invertirlo desde la mitad //-------------------------------------------------------------- void vector1() { int V[20]; int d; clrscr(); gotoxy(posx, posy); printf("Inserte dimensi¢n del vector: "); scanf("%d",&d); llenar(V,d); printf("\n\nVector original: \n"); mostrar(V,d); printf("\n\nVector luego de la inversi¢n: \n"); invierte(V,d); mostrar(V,d); getch(); menu(); } //-------------------------------------------------------------- // Dado un polinomio evaluarlo en el punto x (todo en un vector) //-------------------------------------------------------------- void vector2() { clrscr(); int v[20]; int d,x; gotoxy(posx, posy); printf("Inserte dimensi¢n del vector: "); scanf("%d",&d); printf("Inserte el valor de (x): "); scanf("%d",&x); llenar(v,d); printf("\nVector: "); mostrar(v,d); evalua(v,d,x); getch(); menu(); } int main() { menu(); return 0; }
el 31 oct. 08