Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/04/2014, 06:31
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años, 6 meses
Puntos: 49
Respuesta: triangulo iscosceles pintado!

Antes que nada un par de observaciones:

* la función main es de tipo int, cosas del estándar del C/C++ y así hay que declararla, con su correspondiente return.

* las instrucciones, tipo for, if, else, etc cuyo cuerpo se reduzca a una sola instrucción no necesitan de llaves. Lo único que consigues con eso es enfarragar el código.

* pon un poco más de cuidado en la indentación o sangrado.

Supongo que querías una salida como esta:

Cita:

Introduce la altura del triangulo : 10

Introduce el caracter a pintar: *

Estara hueco?:

0- No

1- Si
0

*
**
***
****
*****
******
*******
********
*********
**********
*********
********
*******
******
*****
****
***
**
*
Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. int pintartriangulo(){
  4.     int opcion=0;
  5.     printf("\n0- No\n");
  6.     printf("\n1- Si\n");
  7.     scanf("%d",&opcion);
  8.     printf("\n");
  9.     return opcion;
  10. }
  11.  
  12. int main(){
  13.   int n, op1, i, j;
  14.   char c;
  15.  
  16.   printf("\nIntroduce la  altura del triangulo : ");
  17.   scanf("%d", &n);
  18.   printf("\nIntroduce el caracter a pintar: ");
  19.   scanf(" %c", &c);
  20.   printf("\nEstara hueco?: \n");
  21.   op1=pintartriangulo();
  22.   switch(op1){
  23.     case 0: //triangulo lleno
  24.      i=0;
  25.      while(i < n-1){
  26.        for(j= 0;  j<=i; j++)
  27.          printf("%c",c);
  28.        printf("\n");
  29.        i++;
  30.       }
  31.       i=0;
  32.       while(i < n){
  33.        for(j= 0; j< n-i; j++)
  34.          printf("%c",c);
  35.         printf("\n");
  36.         i++;
  37.       }
  38.       break;
  39.   case 1: //triangulo vacio
  40.     i=0;
  41.     while(i < n-1){
  42.     for(j= 0; j < n; j++)
  43.       if(j == 0 || j==i)
  44.         printf("%c",c);
  45.       else
  46.         printf(" ");
  47.      printf("\n");
  48.      i++;
  49.      }
  50.      i=0;
  51.      while(i < n){
  52.       for(j= 0; j < n; j++)
  53.         if(j == 0 || j== n-i-1)
  54.           printf("%c",c);
  55.          else
  56.            printf(" ");
  57.       printf("\n");
  58.       i++;
  59.       }
  60.       break;
  61.   }
  62.   return 0;
  63. }

Aunque yo soy más partidario de usar for en lugar de while ya que conoces los valores inicial y final:

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. int pintartriangulo(){
  4.     int opcion=0;
  5.     printf("\n0- No\n");
  6.     printf("\n1- Si\n");
  7.     scanf("%d",&opcion);
  8.     printf("\n");
  9.     return opcion;
  10. }
  11.  
  12. int main(){
  13.   int n, op1, i, j;
  14.   char c;
  15.  
  16.   printf("\nIntroduzce la  altura del triangulo : ");
  17.   scanf("%d", &n);
  18.   printf("\nIntroduce el caracter a pintar: ");
  19.   scanf(" %c", &c);
  20.   printf("\nEstara hueco?: \n");
  21.   op1=pintartriangulo();
  22.   switch(op1){
  23.     case 0: //triangulo lleno
  24.      for(i=0;i<n-1;i++){
  25.        for(j= 0;  j<=i; j++)
  26.           printf("%c",c);
  27.        printf("\n");
  28.       }
  29.       for(i=0;i<n;i++){
  30.        for(j= 0; j< n-i; j++)
  31.          printf("%c",c);
  32.         printf("\n");
  33.       }
  34.       break;
  35.   case 1: //triangulo vacio
  36.     for(i=0;i<n-1;i++) {
  37.       for(j= 0; j < n; j++)
  38.         if(j == 0 || j==i)
  39.           printf("%c",c);
  40.         else
  41.           printf(" ");
  42.        printf("\n");
  43.      }
  44.      for(i=0;i<n;i++){
  45.       for(j= 0; j < n; j++)
  46.         if(j == 0 || j== n-i-1)
  47.           printf("%c",c);
  48.          else
  49.            printf(" ");
  50.       printf("\n");
  51.       }
  52.       break;
  53.   }
  54.   return 0;
  55. }

E incluso me decanto por el operador ternario en lugar del if-else:

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. int pintartriangulo(){
  4.     int opcion=0;
  5.     printf("\n0- No\n");
  6.     printf("\n1- Si\n");
  7.     scanf("%d",&opcion);
  8.     printf("\n");
  9.     return opcion;
  10. }
  11.  
  12. int main(){
  13.   int n, op1, i, j;
  14.   char c;
  15.  
  16.   printf("\nIntroduzce la  altura del triangulo : ");
  17.   scanf("%d", &n);
  18.   printf("\nIntroduce el caracter a pintar: ");
  19.   scanf(" %c", &c);
  20.   printf("\nEstara hueco?: \n");
  21.   op1=pintartriangulo();
  22.   switch(op1){
  23.     case 0: //triangulo lleno
  24.      for(i=0;i<n-1;i++){
  25.        for(j= 0;  j<=i; j++)
  26.          printf("%c",c);
  27.        printf("\n");
  28.       }
  29.       for(i=0;i<n;i++){
  30.        for(j= 0; j< n-i; j++)
  31.          printf("%c",c);
  32.         printf("\n");
  33.       }
  34.       break;
  35.   case 1: //triangulo vacio
  36.     for(i=0;i<n-1;i++) {
  37.       for(j= 0; j < n; j++)
  38.         (j == 0 || j==i)? printf("%c",c):printf(" ");
  39.        printf("\n");
  40.      }
  41.      for(i=0;i<n;i++){
  42.       for(j= 0; j < n; j++)
  43.         (j == 0 || j== n-i-1) ? printf("%c",c):printf(" ");
  44.       printf("\n");
  45.       }
  46.       break;
  47.   }
  48.   return 0;
  49. }


¡¡¡Saluditos!!!


Última edición por leosansan; 02/04/2014 a las 08:01