SA-MP Forums Archive
[Off] Ayuda Histograma Vertical C# , C++ - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [Off] Ayuda Histograma Vertical C# , C++ (/showthread.php?tid=425685)



Ayuda Histograma Vertical C# , C++ - MiGu3X - 26.03.2013

Este es mi codigo:

pawn Код:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

//histograma vertical que a cada palabra del input le hace una barrita que cuenta cuбntas letras tiene esa palabra
main()

{
    int i=0, k, l;
    char c, s[30];
   
    for (l=0; l<=30; ++l) {
                    s[l] = '\0';
                }
               
    for (k=0; k<=30; ++k) {
       
        while ((c=getchar())!=EOF) {
           
                if (i==k && c!=' ' && c!='\n') {
                    s[i++]='+';
                }
                else if (i != k && c!=' ') {
                    ++i;
                }
                else if (c==' ') {
                    s[i]=' ', i=0;
                }
            }
            printf("%s\n", s);
    }
}
Cuando presiono enter no me devuelve nada, plis ayuda, gracias MiGu3X


Re: Ayuda Histograma Vertical C# , C++ - Daniel-92 - 26.03.2013

Esto deberia ser [off], te dejo un ejemplo en pawn aver si lo puedes adaptar.
pawn Код:
public OnRconCommand(cmd[]) {
    //--------------------------------------------------------------------------
    new Letras[128],result[64];
    for(new i=0; i < strlen(cmd); i++) {
        Letras[cmd[i]]++;
    }
    //--------------------------------------------------------------------------
    for(new i=0; i < sizeof(Letras); i++) {
        if(Letras[i] && Letras[i] != ' ') {
            for(new j=0; j < Letras[i]; j++) {
                strcat(result,"|");
            }
            printf("%c %s",i,result);
        }
        result[0] = '\0';
    }
    return 1;
}



Respuesta: Ayuda Histograma Vertical C# , C++ - MiGu3X - 26.03.2013

No me adapto bien a pawn necesito ayuda en el lenguaje c. Si pueden por favor


Re: Ayuda Histograma Vertical C# , C++ - Daniel-92 - 26.03.2013

Fijate que no es nada del otro mundo adaptarlo, la idea era que aprendieras.
pawn Код:
main() {
    int Letras[128];
    for(int i=0; i < 128; i++) {
        Letras[i] = 0;
    }
    //-----------------------------------------------------------------------
    for(int i=0; i < CANTIDAD_DE_LETRAS; i++) {
        Letras[getchar()]++;
    }
    //-----------------------------------------------------------------------
    for(int i=0; i < 128; i++) {
        if(Letras[i] && Letras[i] != ' ') {
            printf("%c ",i);
            for(int j=0; j < Letras[i]; j++) {
              printf("|");
            }
            printf("\n");
        }
    }
}



Re: Ayuda Histograma Vertical C# , C++ - MiGu3X - 26.03.2013

me tira errors, ,


Respuesta: Ayuda Histograma Vertical C# , C++ - WCrimson - 26.03.2013

Te publico el cуdigo bбsico aquн por sн ya no ingresas al otro foro (tambiйn se encuentra publicado allб).
pawn Код:
#include <stdio.h>
#include <stdlib.h>

#define MAX_WORDS ( 25 )
#define MAX_LENGHT ( 30 )
int main(int argc, char *argv[])
{
      int
          count = 0,
          j = -1;
      char c,
           words[2][MAX_WORDS][MAX_LENGHT] = {{'\0', '\0'}, {'\0', '\0'}};
           
      do
      {
             c = getchar();
             if(c == ' ' || c == '\t' || c == EOF) count++, j = -1;
             else if(count == MAX_WORDS) {printf("La cantidad maxima de palabras son %d.",MAX_WORDS); break;}
             else words[0][count][++j] = c, words[1][count][j] = '|';
      }
      while( c != '\n');
     
      printf("\n");
      for( int i = 0; i <= MAX_WORDS-1; i++)
      {
           if(words[0][i][0] != '\0') printf("[%2d]: %s\n", i+1, words[1][i]);
           else continue;
      }
      printf("\n");
      system("pause");
      return EXIT_SUCCESS;
}
Modificalo segъn lo necesites.


Respuesta: Ayuda Histograma Vertical C# , C++ - xSDx - 26.03.2013

Quote:
Originally Posted by WCrimson
Посмотреть сообщение
Te publico el cуdigo bбsico aquн por sн ya no ingresas al otro foro (tambiйn se encuentra publicado allб).
pawn Код:
#include <stdio.h>
#include <stdlib.h>

#define MAX_WORDS ( 25 )
#define MAX_LENGHT ( 30 )
int main(int argc, char *argv[])
{
      int
          count = 0,
          j = -1;
      char c,
           words[2][MAX_WORDS][MAX_LENGHT] = {{'\0', '\0'}, {'\0', '\0'}};
           
      do
      {
             c = getchar();
             if(c == ' ' || c == '\t' || c == EOF) count++, j = -1;
             else if(count == MAX_WORDS) {printf("La cantidad maxima de palabras son %d.",MAX_WORDS); break;}
             else words[0][count][++j] = c, words[1][count][j] = '|';
      }
      while( c != '\n');
     
      printf("\n");
      for( int i = 0; i <= MAX_WORDS-1; i++)
      {
           if(words[0][i][0] != '\0') printf("[%2d]: %s\n", i+1, words[1][i]);
           else continue;
      }
      printf("\n");
      system("pause");
      return EXIT_SUCCESS;
}
Modificalo segъn lo necesites.
me parece que para usar la funcion system"pause" se debe llamar el include windows.h


Respuesta: Ayuda Histograma Vertical C# , C++ - WCrimson - 26.03.2013

Quote:
Originally Posted by xSDx
Посмотреть сообщение
me parece que para usar la funcion system"pause" se debe llamar el include windows.h
No, esta incluido en stdlib.


Re: Ayuda Histograma Vertical C# , C++ - Daniel-92 - 26.03.2013

Hasta ahorita lei que era por palabras (yo pensaba que era por letras) y en forma vertical, si es vertical puede ser un poco mбs complicado.


Respuesta: Re: Ayuda Histograma Vertical C# , C++ - WCrimson - 26.03.2013

Quote:
Originally Posted by Daniel-92
Посмотреть сообщение
Hasta ahorita lei que era por palabras (yo pensaba que era por letras) y en forma vertical, si es vertical puede ser un poco mбs complicado.
Yo tampoco leн que fuese vertical.
Pues asн serб:

pawn Код:
#include <stdio.h>
#include <stdlib.h>

#define MAX_WORDS ( 25 )
#define MAX_LENGHT ( 30 )
int main(int argc, char *argv[])
{
      int
          count = 0,
          j = -1;
      char c,
           words[2][MAX_WORDS][MAX_LENGHT] = {{{'\0'}, {'\0'}}, {{'\0'}, {'\0'}}};
           
      do
      {
             c = getchar();
             if(c == ' ' || c == '\t' || c == EOF) count++, j = -1;
             else if(count == MAX_WORDS) {printf("La cantidad maxima de palabras son %d.",MAX_WORDS); break;}
             else if(c != '\n')words[0][count][++j] = c, words[1][count][j] = '|';
      }
      while( c != '\n');
     
      printf("\n");
      for(int i = MAX_LENGHT-1; i > -1; --i)
      {
          printf("%2d |", i+1);
          for(int n = 0; n < MAX_WORDS; n++)
          {
              if(words[0][n][i] != '\0') printf("*  ");
              else printf("   ");
          }
          printf("\n");
      }
      printf("   +");
      for(int i = 0; i < MAX_WORDS; i++) printf("---");
      printf("    ");
      for(int i = 0; i < MAX_WORDS; i++) printf("%2d ", i+1);
      printf("\n");
      system("pause");
      return EXIT_SUCCESS;
}