[Off] Ayuda Histograma Vertical C# , C++
#1

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
Reply
#2

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;
}
Reply
#3

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

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");
        }
    }
}
Reply
#5

me tira errors, ,
Reply
#6

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.
Reply
#7

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
Reply
#8

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.
Reply
#9

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.
Reply
#10

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;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)