Wypisanie tekstu z klawiatury?

0

Wytłumaczy ktoś jak wypisywać tekst z klawiatury w c?
I jak z takiego wczytanego tekstu wyświetlić liczbę naciśnięć na klawiaturze telefonu z literami?

0

Po pierwsze jak wczytać tekst z klawiatury ?
Bo pisałam coś takiego

#include <stdio.h>


int main()
{
    char tekst[160];
    scanf("%159s",&tekst);
    printf(tekst);

    return 0;
}

Wpisałam ala ma kota , wyświetliło tylko ala
Chce żeby mi wypisało liczbę naciśnięć każdego klawisza
powinno wyjść:
[2]-4
[5]-5
[6]-4
[9]-1
[0]-2

Z klawiatury takiej jak była kiedys przy telefonach z klawiszami
1
2 abc
3 def
4ghi
5 jkl
6 mno
7 prqs
8 tuv
9 wxyz
*
0 SP

0
#include <iostream>
int main()
{
    std::string text;
    std::getline(std::cin,text);
    std::cout<<text<<std::endl;
}

teraz wystarczy przeiterować po stringu i dopisać odpowiednią funkcję do zliczania naciśnięć

0

a jak to ma zliczać?

0

Możesz skorzystać

  1. Ze zwykłej tablicy int znaki[128] i zwiększać tę komórkę, której indeks jest liczbową reprezentacją znaku. Albo...
  2. Użyć kontenera std::map<char, int> z #include <map> no i technika wykonania… PRAWIE ta sama ;)
0

Chociażby tak..
Nie jest to dokończone bo trzeba dopisać tych case'ów aż do 'z' + dodać zliczanie tych samych cyfr np dla 2 , 3, 4 i dodawać kliknięcia

#include <stdio.h>
#include <string.h>

struct number {
    char c;
    int key;
    int clicks_number;
};

int main()
{
    char text[] = "abacaba";
    int size = strlen(text);
    struct number clicks[size];
    for(int i=0;i<size;++i)
    {
        switch(text[i])
        {
            case 'a':
                clicks[i].c = 'a';
                clicks[i].key = 2;
                clicks[i].clicks_number = 1;
                break;
            case 'b':
                clicks[i].c = 'b';
                clicks[i].key = 2;
                clicks[i].clicks_number = 2;
                break;
            case 'c':
                clicks[i].c = 'c';
                clicks[i].key = 2;
                clicks[i].clicks_number = 3;
                break;
        }
    }
    for(int i=0;i<size;i++)
    {   
        printf("[%d]-", clicks[i].key);
        printf("%d\n", clicks[i].clicks_number);
    }
}

0
#include <stdio.h>
#include <string.h>

struct number {
    char c;
    int key;
    int clicks_number;
};

int main()
{


  
 int text;
scanf("%d",&text);
  int size = strlen(text);
   struct number clicks[size];

    for(int i=0;i<size-1;++i)
    {
        switch(text)
        {
            case ' ':
                clicks[i].c = ' ';
                clicks[i].key = 0;
                clicks[i].clicks_number = 1;
                break;
            case 'a':
                clicks[i].c = 'a';
                clicks[i].key = 2;
                clicks[i].clicks_number = 1;
                break;
            case 'b':
                clicks[i].c = 'b';
                clicks[i].key = 2;
                clicks[i].clicks_number = 2;
                break;

            case 'c':
                clicks[i].c = 'c';
                clicks[i].key = 2;
                clicks[i].clicks_number = 3;
                break;
            case 'd':
                clicks[i].c = 'd';
                clicks[i].key = 3;
                clicks[i].clicks_number = 1;
                break;

            case 'e':
                clicks[i].c = 'e';
                clicks[i].key = 3;
                clicks[i].clicks_number = 2;
                break;

            case 'f':
                clicks[i].c = 'f';
                clicks[i].key = 3;
                clicks[i].clicks_number = 3;
                break;

            case 'g':
                clicks[i].c = 'g';
                clicks[i].key = 4;
                clicks[i].clicks_number = 1;
                break;
            case 'h':
                clicks[i].c = 'h';
                clicks[i].key = 4;
                clicks[i].clicks_number = 2;
                break;

              case 'i':
                clicks[i].c = 'i';
                clicks[i].key = 4;
                clicks[i].clicks_number = 3;
                break;

               case 'j':
                clicks[i].c = 'j';
                clicks[i].key = 5;
                clicks[i].clicks_number = 1;
                break;
            case 'k':
                clicks[i].c = 'k';
                clicks[i].key = 5;
                clicks[i].clicks_number = 2;
                break;

                    case 'l':
                clicks[i].c = 'l';
                clicks[i].key = 5;
                clicks[i].clicks_number = 3;
                break;
                     case 'm':
                clicks[i].c = 'm';
                clicks[i].key = 6;
                clicks[i].clicks_number = 1;
                break;
                   case 'n':
                clicks[i].c = 'n';
                clicks[i].key = 6;
                clicks[i].clicks_number = 2;
                break;
                   case 'o':
                clicks[i].c = 'o';
                clicks[i].key = 6;
                clicks[i].clicks_number = 3;
                break;

                   case 'p':
                clicks[i].c = 'p';
                clicks[i].key = 7;
                clicks[i].clicks_number = 1;
                break;
                case 'q':
                clicks[i].c = 'q';
                clicks[i].key = 7;
                clicks[i].clicks_number = 2;
                break;
                case 'r':
                clicks[i].c = 'r';
                clicks[i].key = 7;
                clicks[i].clicks_number = 3;
                break;
                case 's':
                clicks[i].c = 's';
                clicks[i].key = 7;
                clicks[i].clicks_number = 4;
                break;
                case 't':
                clicks[i].c = 't';
                clicks[i].key = 8;
                clicks[i].clicks_number = 1;
                break;
                case 'u':
                clicks[i].c = 'u';
                clicks[i].key = 8;
                clicks[i].clicks_number = 2;
                break;
                case 'v':
                clicks[i].c = 'v';
                clicks[i].key = 8;
                clicks[i].clicks_number = 3;
                break;
                case 'w':
                clicks[i].c = 'w';
                clicks[i].key = 9;
                clicks[i].clicks_number = 1;
                break;
                  case 'x':
                clicks[i].c = 'x';
                clicks[i].key = 9;
                clicks[i].clicks_number = 2;
                break;
                  case 'y':
                clicks[i].c = 'y';
                clicks[i].key = 9;
                clicks[i].clicks_number = 3;
                break;
                  case 'z':
                clicks[i].c = 'z';
                clicks[i].key = 9;
                clicks[i].clicks_number = 4;
                break;
               case '*':
                clicks[i].c = '*';
                clicks[i].key = '*';
                clicks[i].clicks_number = 1;
                break;
              case '#':
                clicks[i].c = '#';
                clicks[i].key = '#';
                clicks[i].clicks_number = 1;
                break;

        }
    }
    for(int i=0;i<size-1;i++)
    {
        printf("[%d]-", clicks[i].key);
        printf("%d\n", clicks[i].clicks_number);
    }
}

i jak wpisze ala ma kota
to wyświetla sie
[-2]=1990....
[19901...]-421... i czemu bo jak dam text[i] to wyskakuje błąd

0

@Nency Black:
Przypomnij sobie różnicę pomiędzy int n = 56;, char n[] = "56"; a char n = '5';.
Zrób sobie dwie tablicę:

const struct number nbrs[] = {
  {' ', '0', 1},
  {'a', '2', 1},
  {'b', '2', 2},
  ...
};
int clicks[128] = {};

I wtedy dla każdej litery w wejściowym ciągu:

  • znajdź tą literę w nbrs[] porównując z nbrs[].c
  • ze znalezionego rekordu odczytaj key i clicks_number
  • dodaj kliknięcia: clicks[key]+=clicks_number;

Po tym wypisz indeksy (konwertując na char) i wartości clicks jeżeli clicks[index]!=0.

1 użytkowników online, w tym zalogowanych: 0, gości: 1