• Domingo 22 de Diciembre de 2024, 12:33

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Rombus

Páginas: 1 2 [3] 4 5
51
C/C++ / Asignacion de memoria
« en: Jueves 9 de Octubre de 2008, 17:48 »
Hola!

alguien sabe porque me esta dando un segmentation fault en la linea 16 del siguiente codigo?
uso codeblocks con gcc en ubuntu 8.04

Código: C
  1. typedef struct pila_s{
  2.     void *elementos;
  3.     int size;
  4.     int head;
  5. }pila_t;
  6.  
  7. typedef struct{
  8.     pila_t *pila;
  9.     int sizeTipo;
  10. }pilaAdm_t;
  11.  
  12. pilaAdm_t *stackCreate(int size, int sizeTipo){
  13.     pilaAdm_t *stack = (pilaAdm_t *) malloc (sizeof(pilaAdm_t));
  14.     void *elemens = (void *)malloc(size * sizeTipo);
  15.    
  16.     stack->pila->elementos = elemens;
  17.     stack->pila->size = size;
  18.     stack->pila->head = 0;
  19.     stack->sizeTipo = sizeTipo;
  20.  
  21.     return stack;
  22. }
  23.  

cuando la llamo desde el main lo hago de la siguiente forma:

Código: C
  1. int main(void){
  2.     pilaAdm_t *stack;
  3.     int n = 1;
  4.  
  5.     stack = stackCreate(n,sizeof(int));
  6.     return 0;
  7. }
  8.  
  9.  

espero que alguien me pueda ayudar

gracias!

52
C/C++ / Remover Nodo de Arbol Binario de Busqueda
« en: Martes 7 de Octubre de 2008, 17:52 »
Hola amigos!

tengo un problema intentando implementar una funcion remover, para un arbol binario de busqueda.

con un compañero planteamos este algoritmo:

Código: C
  1.  
  2. arbol_t *removerDesbalanceado(arbol_t *arbol, int valor){ 
  3.     arbol_t *aux;   
  4.  
  5.     if(!arbol) 
  6.         return NULL;
  7.  
  8.     if(arbol->contenido > valor) 
  9.         arbol->iz = removerDesbalanceado(arbol->iz,valor); 
  10.     else if(arbol->contenido < valor) 
  11.         arbol->der = removerDesbalanceado(arbol->der,valor); 
  12.     else{   //Si es igual 
  13.         if(arbol->der == NULL){ 
  14.             if(arbol->iz == NULL) 
  15.                 return NULL;    //Si no tiene hijos retorna Null 
  16.             return arbol->iz;   //sino retorna todo el subarbol izquierdo 
  17.         } 
  18.         else{ 
  19.             aux = menor(arbol->der); 
  20.             aux->iz = arbol->iz; 
  21.             aux = arbol->der; 
  22.             free(arbol); 
  23.             return aux; 
  24.         } 
  25.     } 
  26. }
  27.  
  28.  

arbol_t es la estructura de un nodo con un campo contenido y dos campos punteros de hijos:

Código: C
  1. typedef struct arbolStr{ 
  2.     int contenido; 
  3.     struct arbolStr *iz, *der; 
  4. }arbol_t;
  5.  


le pusimos removerDesbalanceado pq lo que hacemos es una vez q encontramos el nodo a remover ponemos en lugar de este, todo el arbol derecho, enlazando el nodo de mas abajo a la iz (el de menor valor) con el arbol izquierdo del nodo a remover.

se lo mostramos a otro compañero y nos dijo, que el arbol se iba a desbalancear demaciado, y que lo mejor seria: agarrar el menor del hijo derecho del arbol a remover y poner el valor de ese nodo como el valor del nodo a remover y luego hacer que el que apuntaba al nodo del cual "robamos"  el valor apunte a NULL.

entonces el arbol quedaria mucho mas balanceado y la remocion seria mas efectiva.

nuestro problema es el de hacer que el nodo que apuntaba al nodo del "robamos" el valor apunte a null.

este es nuestro codigo, no terminado, en principio copiamos la funcion de removerDesbalanceado para modificarla, quiza hay cosas que son de la otra funcion y no estan modificadas:

Código: C
  1. arbol_t *removerBalanceado(arbol_t *arbol, int valor){ 
  2.     arbol_t *a, *b; 
  3.     int cont;   
  4.  
  5.     if(!arbol) 
  6.         return NULL;   
  7.  
  8.     if(arbol->contenido > valor) 
  9.         arbol->iz = removerBalanceado(arbol->iz,valor);  
  10.     else if(arbol->contenido < valor)        
  11.         arbol->der->contenido = removerBalanceado(arbol->der,valor); 
  12.     else{       //Si es igual, osea, si encontre el nodo a remover 
  13.         if(arbol->der == NULL){ 
  14.             if(arbol->iz == NULL) 
  15.                 return NULL;        //Si no hay hijo iz ni der devuelvo null 
  16.             return arbol->iz;       //si no hay hijo der pero si iz devuelvo subarbol iz 
  17.         } 
  18.         else{ 
  19.             a = menor(arbol->der); 
  20.             cont = a->contenido; 
  21.             b = rastreaAnterior(a); //busco el que apuntaba a aux para ponerlo en null 
  22.             b->iz = NULL; //se que es el izquierdo pq cuando busco el menor siempre va a estar a la iz 
  23.             free(a);    //Libero a, osea, remuevo el nodo a remover 
  24.             return b;   //Devuelvo b que es el nodo que apuntaba  
  25.         }
  26.     } 
  27.     arbol->contenido = cont; 
  28. }
  29.  


vamos por buen camino?

como podriamos hacer la parte del else{} de la funcion anterior.



ah!, me olvidaba, en el removerBlanaceado, llamo a una funcion auxiliar que me devuelve el que apunta a un nodo en particular, le paso el nodo minimo y cuando obtengo el nodo que lo apuntaba hago q apunte a NULL, parece razonable, el problema es que me parece medio enredado, y se que debe alguna otra forma para hacerlo mas eficiente.

si alguien nos puede ayudar se lo agradecemos ;)



saludos!

53
C/C++ / Re: Que libro puedo usar?
« en: Martes 7 de Octubre de 2008, 15:53 »
hola!


como siempre recomiendo lo mismo, te paso este link donde ya lo dije XD

viewtopic.php?f=18&t=36826


nacho cabanes me ayudo muchisimo jaja, posta, lo de archivos lo tiene re claro y hasta cosas que no estan en otros libros.


saludos, espero haberte ayudado

54
C/C++ / Re: triangulo de pascal casi listo
« en: Sábado 4 de Octubre de 2008, 04:47 »
hey!

como va?

quiero ayudar... me podrias explicar que son los valores que le pasas por parametro a la funcion?

Código: Text
  1. int crea_triangulo_pascal(int i,int j,int h,int k){
  2.  


para imprimir se me ocurre que inicializes la matriz con todas las posiciones en 0 y dsp llames al crea triangulo, una vez hecho esto, al imprimir, imprimes una matriz normal, pero solo imprimes el contenido si es distinto de 0 sino imprimes un espacio.


saludos!

55
C/C++ / Re: Manejo de archivos....
« en: Miércoles 1 de Octubre de 2008, 21:37 »
uhh

excelente!, gracias por el dato, estas cosas asi son re valorables

 :beer:

56
C/C++ / Re: Manejo de archivos....
« en: Miércoles 1 de Octubre de 2008, 20:34 »
Cita de: "ProfesorX"
Código: C
  1.  
  2.                 //utiliza lo de abajo en lugar de strcpy(temp,"                                  ");
  3.                 // Tambien puedes utilizas strcpy(temp, "") si lo prefieres pero no lo recomiendo
  4.                 strncpy(temp,"", 20);
  5.  
  6.  


:o strncpy(temp,"", 20);

¿esa funcion pasa todos los valores de temp a '' ?

bastante util, jeje, y yo haciendo la funcion.

con respecto a usar el strcpy... yo tampoco lo recomiendo... pensaba que haciendo un strcpy(temp,"") se pasaba toda la cadena a pero no lo es.. por lo que te queda basura entre medio... es por eso que termine haciendo la funcion limpiaString

saludos!

57
C/C++ / Re: Manejo de archivos....
« en: Miércoles 1 de Octubre de 2008, 20:31 »
Hola amigo..

a simple vista no le encontre ningun error.. cuando tenga unos minutos mas, lo releo y veo si te puedo ayudar.

igual vi que tenias un comentario que decia como limpio una variable char.. algo asi

y yo justo hice una funcion para eso que capaz te es util, es la siguiente:

Código: Text
  1. void limpiaString(char *a, int length){
  2.     int i;
  3.     for(i=0; i < length; i++)
  4.         a[i] = '';
  5. }
  6.  

es muy basica... pero bueno... puede ser util :)

entonces en vez de hacer
Código: Text
  1. strcpy(temp,"                                  "); // como borrar el contenido de una variable char?
  2.  

podrias hacer
Código: Text
  1. limpiaString(temp,20)
  2.  

20 es el largo de tu arreglo de chars

y el tab capaz es mas facil de recordar poniendo un 't' en vez de un 9

ahora me tengo q ir


despues le pego un ojo mas a fondo


saludos!

58
C/C++ / Re: Miren estos dos ejercicios porfa!!
« en: Martes 30 de Septiembre de 2008, 13:27 »
jaja, eso te lo dije yo ;)

mira esto con respecto a los numeros romanos, te lo habia dicho la vez pasada pero cerraron el tema, no se si lo alcanzaste a ver:

viewtopic.php?f=34&t=36846

ese codigo pasa de numeros romanos a decimal, esta en pascal, pero esta re optimizado y te da una idea de lo que nesesitas para hacerlo

saludos;)

59
C/C++ / Re: Pierdo un Caracter Trabajando con ficheros
« en: Lunes 29 de Septiembre de 2008, 16:06 »
Cita de: "m0skit0"
Es decir, ¿sólo te quita los caracteres iniciales si vienen precedidos de tabulación(es)?
es interesante que lo digas... ya que en teoria mi archivo no tiene tabulaciones :S, pero sin embargo las esta leyendo...

Cita de: "m0skit0"
De todas formas, yo lo haría más simple: leería la línea entera y le insertaría las tabulaciones necesarias y volvería a escribir la línea entera, en vez de estar haciendo malabares con el puntero de fichero.

muy cierto, voy a hacer eso... me esta leyendo los tabuladores que le ingreso cuando no deberia... eso es enredamiento de puntero de fichero XD


me pongo a trabajar :comp: , cuando tenga novedades aviso


gracias  :hola:

60
C/C++ / Re: triangulo de pascal
« en: Lunes 29 de Septiembre de 2008, 15:45 »
Cita de: "m0skit0"
Sí sí, cierto, pero si lo que pretendes es devolver la matriz, entonces hay que pasarla por parámetro. Eso de crearla dentro de una función y sacarla de su contexto es considerado mala programación.

:O no lo sabia, buen dato

m0skit0, si tienes tiempo, me puedes dar una mano con este problema?  viewtopic.php?f=18&t=36910

61
C/C++ / Re: triangulo de pascal
« en: Lunes 29 de Septiembre de 2008, 15:31 »
pero si lo hago con int **matrix[n] dentro de la funcion no podria hacer el return matrix...
o si?


ahora hago un programa de prueba para sacarme esa duda ;)



jaja, sabia que no lo habia hecho por inercia... ese problema lo tube hasta artarme el año pasado  :lol:

dentro de una funcion que devuelve una matriz, la matriz debe ser dinamica para que viva mas que la propia funcion, de lo contrario estaria retornando una matriz local, y el programa no andaria como lo esperado. :beer:

62
C/C++ / Re: triangulo de pascal
« en: Lunes 29 de Septiembre de 2008, 01:26 »
hola amigo!

buen trabajo!

mira... te lo pase a funciones para que veas como funcionan:


Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int altura(void){
  5.     int n;
  6.    
  7.     printf(" Numero de escalones del triangulo: ");
  8.     scanf("%d", &n);
  9.     return n;
  10. }
  11.  
  12. int **allocaMat(int n){
  13.     int i;
  14.     int **matrix;
  15.    
  16.     matrix = (int **) malloc(n*sizeof(int*));
  17.     for(i=0; i<n; i++)
  18.         matrix[i] = (int *)malloc((i+1)*sizeof(int));
  19.     return matrix;
  20. }
  21.  
  22. void creaTrianguloEnMatriz(int **matrix,int n){
  23.     int i,j;
  24.    
  25.     for(i=0; i<n; i++)
  26.         for(j=0; j<=i; j++)
  27.             matrix[i][j]=0;
  28.  
  29.     for(i=0; i<n; i++)
  30.         for(j=0; j<=i; j++)
  31.             if(j==0 || j==i)
  32.                 matrix[i][j]=1;
  33.             else
  34.                 matrix[i][j]=matrix[i-1][j-1]+matrix[i-1][j];   
  35. }
  36.  
  37. void imprimeMat(int **matrix, int n){
  38.     int i, j, activo, x;
  39.    
  40.     for(i=0; i<n; i++){
  41.         for(j=0; j<=i; j++){
  42.             if(activo)
  43.                 for(x=0; x<n-i+1; x++)
  44.                     printf("  ");
  45.             activo=0;
  46.             printf(" %d  ", matrix[i][j]);
  47.         }
  48.         activo=1;
  49.         printf("n");
  50.     }   
  51. }
  52.  
  53. int main(){
  54.     int **matrix, n;
  55.    
  56.    
  57.     n = altura();
  58.     matrix = allocaMat(n);
  59.     
  60.     printf("nEl numero de iteraciones es: %dn", n);
  61.     
  62.     creaTrianguloEnMatriz(matrix,n);
  63.     
  64.     printf("n");
  65.  
  66.     imprimeMat(matrix,n);
  67.    
  68.     return(0);
  69. }
  70.  
  71.  


saludos

63
C/C++ / Re: AFN a AFD
« en: Lunes 29 de Septiembre de 2008, 01:06 »
hola!

no reconocia las siglas.. pero puce "AFN AFD" en el google y automaticamente aparecen pdf's con algoritmos.

te fijaste en alguno?

64
C/C++ / Re: metodo de la burbuja ordenas de mayor a menor y visiversa
« en: Lunes 29 de Septiembre de 2008, 00:55 »
esto es una buena lectura:

http://es.wikipedia.org/wiki/Bubblesort

no estas tan lejos con lo que tenes... ponele onda, es mejor lo ganado que lo regalado ;)

65
C/C++ / Pierdo un Caracter Trabajando con ficheros
« en: Sábado 27 de Septiembre de 2008, 16:07 »
Hola gente!

tengo un problema con el siguiente codigo:

Código: Text
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. #define PATH "/home/rombus/Escritorio/sample.c"
  7.  
  8. #define FALSE 0
  9. #define TRUE !FALSE
  10.  
  11. #define escribeEnter(a)         fputc('n',a)
  12. #define unoParaAtraz(a)         fseek(a,(long)-1,SEEK_CUR)
  13. #define unoParaAdelante(a)      fseek(a,(long)1,SEEK_CUR)
  14.  
  15. typedef char boolean;
  16.  
  17.  
  18. boolean buscaLlave(FILE *a){
  19.     char c;
  20.    
  21.     do{
  22.         c = fgetc(a);
  23.     }while(c != '{' && c != EOF);
  24.    
  25.     if(c == EOF)
  26.         return FALSE;
  27.     unoParaAtraz(a);
  28.     return TRUE;
  29. }
  30. void limpiaString(char *a){
  31.     int i;
  32.     for(i=0; a[i] != ''; i++)
  33.         a[i] = '';
  34. }
  35. char *getLine(FILE *a){
  36.     char *l = (char*)malloc(255*sizeof(char));
  37.     int i = 0;
  38.    
  39.     do{
  40.         l[i] = fgetc(a);
  41.     }while((l[i] != 'n') && (l[i++] != EOF));
  42.     return l;
  43. }
  44. void escribeTab(FILE *a, int n){
  45.     int i;
  46.    
  47.     for(i=0; i<n; i++)
  48.         fputc('t',a);
  49. }
  50. void indenta(char *path){
  51.     FILE *b = fopen(path,"r+b");
  52.     int cont = 0;
  53.     char *aux = (char *)malloc(sizeof(char)*255);
  54.     long lastLine;
  55.    
  56.    
  57.     while(!feof(b)){
  58.         if(buscaLlave(b)){
  59.             cont++;
  60.             limpiaString(aux);
  61.             aux = getLine(b);
  62.            
  63.             if(strrchr(aux,'}')){
  64.                 cont--;
  65.                 printf("chau...n");
  66.             }
  67.             if(cont){
  68.                 printf("entro en cont mayor a 1n");
  69.                 do{
  70.                     printf("entro en el don");
  71.                     lastLine = ftell(b);
  72.                     limpiaString(aux);
  73.                     aux = getLine(b);
  74.                    
  75.                     if(strrchr(aux,'}')){
  76.                         cont--;
  77.                         printf("cont --n");
  78.                     }
  79.                     fseek(b,lastLine,SEEK_SET);
  80.                     escribeTab(b,cont);
  81.                    
  82.                     if(strrchr(aux,'{'))
  83.                         cont++;
  84.                        
  85.                     aux = getLine(b);
  86.                     if(strrchr(aux,'}')){
  87.                         cont--;
  88.                         printf("cont --n");
  89.                     }
  90.                    
  91.                     printf("cont: %dn",cont);
  92.                 }while(cont > 0 || !feof(b));
  93.             }
  94.         }
  95.         else
  96.             break;
  97.     }
  98.     fclose(b);
  99. }
  100.  
  101. int main(void){ 
  102.     indenta(PATH); 
  103.     printf("Finn");
  104.    
  105.     return 0;
  106. }
  107.  
  108.  


el fichero que lee (el indicado en PATH) es el siguiente:

Código: Text
  1. void indenta(char *path){
  2. FILE *b = fopen(path,"r+b");
  3. int cont = 0;
  4. char *aux = (char *)malloc(sizeof(char)*255);
  5. long lastLine;
  6.  
  7. while(!feof(b)){
  8. if(buscaLlave(b)){
  9. cont++;
  10. limpiaString(aux);
  11. aux = getLine(b);
  12.  
  13. if(strrchr(aux,'}')){
  14. cont--;
  15. printf("chau...n");
  16. }
  17. if(cont){
  18. printf("entro en cont mayor a 1n");
  19. do{
  20. printf("entro en el don");
  21. lastLine = ftell(b);
  22. limpiaString(aux);
  23. aux = getLine(b);
  24.  
  25. if(strrchr(aux,'}')){
  26. cont--;
  27. printf("cont --n");
  28. }
  29. fseek(b,lastLine,SEEK_SET);
  30. escribeTab(b,cont);
  31.  
  32. if(strrchr(aux,'{')){
  33. cont++;
  34. }
  35.  
  36. aux = getLine(b);
  37. if(strrchr(aux,'}')){
  38. cont--;
  39. printf("cont --n");
  40. }                  
  41. printf("cont: %dn",cont);
  42. }while(cont > 0 || !feof(b));
  43. }
  44. }
  45. }
  46. fclose(b);
  47. }
  48.  
  49.  


lo que quiero lograr es que agarre ese codigo sin indentacion y lo indente.. pero estoy perdiendo el primer caracter de cada linea cuando leo una linea y la indento, y no solo es el primero, como que se suman y a veces son dos o a veces no pierdo ningun caracter, pero la funcion de indentar no se efectua...
no puedo descubrir donde esta el error, lo sigo en papel y no lo desifro...


osea, el archivo modificado me queda:

Código: Text
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.     nt a, b;
  5.     rintf("ingrese a y b: ");
  6.     canf("%d %d",&a,&b);
  7.     if(a > b){
  8.     rintf("no solo a es mayor a b...n");
  9. }
  10. else{
  11. printf("a es mayor a b...n");
  12. }
  13. for(b=0; b<a; b++){
  14. if(b >1){
  15. //linea;
  16. //linea;
  17. }
  18. }
  19. return 0;
  20. }
  21.  
  22.  




uno de mis problema era que no podia depurar en linux (a falta de un IDE completo), encontre el codeBlocks y lo depure...
el error es en la linea 71 con la funcion strrchr();

esto es lo que me dice mi debug:




cuando la cadena AUX vale "tn" como que queda colgado en el strrchr()...

alguien sabe a que se debe esto?, o como resolverlo?

agradesco su ayuda ;)

66
C/C++ / Re: porgrama para hacer diagramas de flujo
« en: Miércoles 24 de Septiembre de 2008, 16:31 »
:o

la verdad q no conosco ningun programa que haga eso...

pero si sabes usar librerias graficas no creo que sea muy dificil de hacer.


donde econtras un if dibujas un rombo donde detro del rombo aparezca lo escrito entre los parentesis del if.
donde hay un printf dibujas esa caja media doblada donde dentro escribes lo que hay entre ' " '




saludos ;)

67
Pascal / De Romanos a Decimal, aporte para los programadores
« en: Martes 23 de Septiembre de 2008, 00:16 »
Hola gente!

estaba visitando el subforo de C y me hicieron recordar un codigo que hice el año pasado en pascal de pasar numeros de romano a decimal,
me acuerdo que lo optimice bastante y quedo bastante corto.

ya que lo encontre queria compartirlo con ustedes, capaz a alguno le venga bien

este es el codigo:


Código: Text
  1. (*lunes, 12 de mayo de 2008, 10:55:23*)
  2. (* Rombus Evil Bones                 *)
  3. program rom;
  4. const
  5.     B = 10;
  6. var
  7.     num, cont, i : integer;
  8. (*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
  9. procedure numRomano (a, b, c: char; num: integer);
  10. begin
  11.     case num of
  12.         9 : write(a,c);    
  13.         5..8: begin
  14.                 write (b);
  15.                 for i:= 6 to num do
  16.                     write (a);
  17.               end;
  18.         4 : write (a, b);
  19.         1..3: for i:= 1 to num do
  20.                 write (a);  
  21.     end;
  22. end;
  23. (*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
  24. procedure defragmenta(num : integer);
  25. begin
  26.     if num < B then
  27.         begin
  28.             case cont of
  29.                 1 : numRomano ('I','V','X',num);
  30.                 2 : numRomano ('X','L','C',num);
  31.                 3 : numRomano ('C','D','M',num);
  32.                 4 : numRomano ('M',' ',' ',num);
  33.             end;
  34.             cont := cont - 1;
  35.         end
  36.     else
  37.         begin
  38.             cont := cont + 1;
  39.             defragmenta(num div B);
  40.             defragmenta(num MOD B);
  41.         end;
  42. end;
  43. (*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
  44. begin
  45.     cont := 1;
  46.     write('Ingrese un num: ');  
  47.     readln(num);
  48.     defragmenta(num);
  49.     readln;
  50. end.
  51.  
  52.  


saludos!

68
C/C++ / Re: metodo de la burbuja ordenas de mayor a menor y visiversa
« en: Martes 23 de Septiembre de 2008, 00:07 »
bien, este es tu codigo:

Código: Text
  1. #include<iostream>
  2. #include<conio.h>
  3. #define MAX 10
  4. using namespace std;
  5.  
  6. int main(void){
  7.     int venta[MAX];
  8.     float promedio;
  9.     int aux,i,j;
  10.    
  11.     for(i=0;i<MAX;i++){
  12.         cout<<"nt Introdusca un numero entero: ";
  13.         cin>>venta[i];
  14.     }
  15.     for(j=0;j<MAX;j++){
  16.         if(venta[i]>venta[i]){
  17.             aux=venta[j];
  18.             venta[j]=venta[j]+venta[j+1];
  19.             venta[j+1]=aux;
  20.         }
  21.     }
  22.     for(i=0;i<MAX;i++){
  23.         cout<<" "<<venta[i];
  24.     }
  25.     getch();
  26.     return 0;
  27. }
  28.  

cambie los numeros magicos por una constante simbolica, te aconsejo que programes asi, y trates de evitar los numeros magicos.

el error lo tienes en la linea 16:

Código: Text
  1.     for(j=0;j<MAX;j++){
  2.         if(venta[i]>venta[i]){
  3.  

revisa el algoritmo de la burbuja y fijate en ese cacho de codigo que puse arriba, ahi es donde debes arreglarlo


saludos ;)

69
C/C++ / Re: Necesito sugerencias. Por eso esta de nuevo...
« en: Lunes 22 de Septiembre de 2008, 17:12 »
Cita de: "saudiaz"
sabes eso me dicen todos ProfesorX me dicen ya lo tienes bien pero no funciona.
[...]Intenta resolverme el problema

aca te guian para que vos puedas resolver el problema, y todos te dicen que ya lo tienes, porque con todo lo que te dicen (que vos deberias hacer), el codigo quedaria andando.

Voy a ver si te puedo ayudar mas "explicitamente", no manejo C++, pero al parecer es programacion estructurada, asique voy a ver que puedo hacer.

Primero te recomiendo que uses la etiqueta CODE, asi no es tan desagradable leer el codigo

bien, a simple vista, es efectivamente lo que te dice el profesorX. el promedio tenes que imprimirlo dentro del for, porque sino estarias imprimiendo el promedio del ultimo valor de i, osea, basura.

revien volvi a leer tu problema, y es todo como te dijo el profesorX!
tenes que escuchar e interpretar lo que dicen para asi terminar el codigo. bien, mira esto, como dije antes, no se C++, pero si quieres imprimir el promedio al final, osea, despues de cargar todos los datos, deberias hacer esto:

Código: Text
  1. cout<<"n n Los promedios son: "
  2.     for(i=0; i<=14;i++)
  3.         cout<<promedio[i]<<endl;
  4.  

o bien, como dijo el profesorX hacer esto:

Código: Text
  1.     for(i=0;i<=14;i++){
  2.         cout<<i<<"nt Introdusca del alumno: ";
  3.         cin>>nombre[i];
  4.         cout<<"nttIntrodusca nota 1: ";
  5.         cin>>nota1[i];
  6.         cout<<"ntt Introdsuca nota 2: ";
  7.         cin>>nota2[i];
  8.         cout<<"ntt Introdsuca nota 3: ";
  9.         cin>>nota3[i];
  10.         promedio[i]=((nota1[i]+nota2[i]+nota3[i])/3);
  11.         cout<<"n n Los promedios son. "<<promedio[i]<<endl;
  12.     }
  13.  


para el punto 3 algo similar a esto:

Código: Text
  1.     for(i=0; i<=14; i++){
  2.         if(promedio[i] <4)
  3.             cout<<"alumno i esta desaprobadon";
  4.         else
  5.             cout<<"alumno i esta aprobadon";
  6.     }
  7.  

te recomiendo usar constantes simbolicas (las que declaras con un #define MAX 15), en vez de numeros magicos, ya que hacen tu codigo mucho mas facil de modificar.

bueno, como dije antes no se C++, lo que te pase deberias acomodarlo un poco, pero en fin, eso es lo que deberias hacer, y es basicamente lo que te dijo el profesorX



espero que te haya servido


saludos!

70
C/C++ / Re: Manuales C++?
« en: Sábado 20 de Septiembre de 2008, 22:42 »
hola!

creo que fue en este foro donde lei esta respuesta que te voy a dar:

pone en el google:

Código: Text
  1. filetype:pdf manuales C++
  2.  


entonces te aparecen todos los manuales c++ en formato pdf

te recomiendo que visites la pagina de nacho cabanes, a mi me saco muchisimas dudas el año pasado mientras cursaba el primer año de licenciatura en sistemas:

http://www.nachocabanes.com/


espero que te haya ayudado


saludos ;)

71
C/C++ / Re: Problema de Byte NULL con archivos
« en: Jueves 18 de Septiembre de 2008, 16:30 »
me quiero matar

Cita de: "m0skit0"
la primera fgetc() lee un carácter y la segunda lee el siguiente

 :argh:  odio cuando me pasa eso!!

es verdad, ese problema lo tube en otras funciones anteriores y dije: "claro, tengo dos fgetc entonces estoy comparando
con dos valores diferentes"

y en este no me di cuenta.



excelente!

ya esta andando :D

el define se convirtio en funcion:
Código: Text
  1. void hastaEOL(FILE *a){
  2.     char c;
  3.     do{
  4.         c = fgetc(a);
  5.     }while((c != 'n') && (c != EOF));
  6. }
  7.  




con respecto a lo del AND y OR.

no es que cuando yo tengo un OR, y la condicion A es falsa, pero la B es verdadera va a seguir siendo verdadera la expresion, y lo mismo en viceseversa?

en cambio si yo tengo un AND y la condicion A es falsa AND la B es verdadera, entonces es falso, osea, tengo un EOF no un enter, pero es el fin de linea al fin.

osea,

1 AND 0 = 0     //si es enter pero no EOF es falso, fin de linea ;)
1 OR 0 = 1      //si es enter pero no EOF seria verdadero y yo quiero que sea falso, osea, estoy en el fin de linea


gracias m0skit0
un error estupido que no podia ver que me estaba volviendo loco  :D

72
C/C++ / Re: Problema de Byte NULL con archivos
« en: Jueves 18 de Septiembre de 2008, 15:53 »
pero no es al revez?

yo quiero leer hasta el fin de linea.

si hago
Código: Text
  1. while((fgetc(a)!= 'n') || (fgetc(a)  != EOF));
  2.  

y leo el primer enter, ahi terminaria mi linea, pero como no es eof la segunda parte de la condicion seria verdadera, y como es un or la expresion seria evaluada como verdadera.

y si hago:
Código: Text
  1. while((fgetc(a)!= 'n') && (fgetc(a)  != EOF));
  2.  

cuando encuentre el primer enter la primera condicion es falsa y la segunda verdadera pero como es un AND la expresion es falsa, y pasaria lo mismo si encuentro un EOF.


tiene sentido lo q digo?

a estas horas estoy muy quemado de la cabeza jaja



Cita de: "m0skit0"
P.D: para los linuxeros, son ficheros. Archivo :no: es nomenclatura de MS, que se inventa los términos.

ficheros entonces  :good:

73
C/C++ / Re: Funciones para dar color a letra y fondo.
« en: Jueves 18 de Septiembre de 2008, 15:04 »
Cita de: "m0skit0"
Es ANSI. No te confundas con ASCII  :P

Amercan National Standards Institute

:O



toda mi vida fue una mentira JAJAJ

74
C/C++ / Re: Problema de Byte NULL con archivos
« en: Jueves 18 de Septiembre de 2008, 14:35 »
hola m0skit0!
gracias por responder.

el byte null, se escribe en la copia, el original queda como estaba.
pero igual, es medio raro, porque lo estoy probando con estos archivos:


como original:
Código: Text
  1.    
  2.    
  3.    
  4. #include <stdio.h>
  5. #include <ctype.h>
  6. #include <stdlib.h>
  7. #define aksjdklfj
  8. #include <sempor.h>
  9. void  main(void){
  10.    
  11. }
  12.  
  13.  

(con muchos n's al principio)

y lo que  termina quedando como "salida", osea, mi "duplica" queda asi:
Código: Text
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6.  

y cuando lo abro al archivo de salida me dice que hay un byte null y que mi archivo fue cortado.

sin embargo, en la consola, me muestra todo como deberia ser :S



osea, el fin de este programa (q en realidad estoy intentando hacer andar la funcion pasaIncludesStd), es agarrar un codigo fuente, y ordenarle todos los #includes <..> al principio, si hay un codigo de la siguiente manera:
Código: Text
  1. #include <stdlib.h>
  2. #define TRUE 1
  3. #include <ctype.h>
  4.  

mi programa deberia organizar los includes para que quede asi:
Código: Text
  1. #include <stdlib.h>
  2. #include <ctype.h>
  3. #define TRUE 1
  4.  


el problema en mi codigo se ve (tomando el archivo de entrada que uso para probarlo) cuando despues
del include <stdlib.h> viene un define, enotnces hay un if bifurcador que si es define no lo pasa al archivo(eso lo va a hacer otra funcion)

pero no puedo corregirlo de ninguna manera :S

saludos!

75
C/C++ / Re: Funciones para dar color a letra y fondo.
« en: Jueves 18 de Septiembre de 2008, 14:19 »
Cita de: "rfog"
Y no me vale que digáis que en Linux todavía se usa la consola, el Borland no está en Linux.


en ningun momento dije que el borland este para linux, yo uso linux y (como estoy aprendiendo a programar), todavia uso la consola.

Cita de: "rfog"
Lo que yo no puedo entender es cómo todavía hay gente que hace programas en consola con compiladores del año de la pera y usa la consola para otra cosa que no sea practicar con ejemplos sencillos o aprender.

cuando las personas que estan aprendiendo postean una duda, por ejemplo en este foro, y si no programan en ANSII C, su codigo es poco portable, yo no puedo copiar y pega dentro de mi compilador pq como dije antes uso linux, y borland no esta para linux, que cuesta obviar los clrscr();?, si todos programaramos en ANSII, seria un mundo mejor ;)

aparte, lo dices como si fuera facil programar con la winapi o la gtk+

Páginas: 1 2 [3] 4 5