Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rogean

Converter uma parte da string para um número inteiro....

Recommended Posts

Alguém poderia me dar pelo menos uma ideia de como fazer a seguinte questão :o :wacko: :blink: ??:

 

Faça um programa que receba uma frase.Caso a frase possua meses por extenso, substitua-os pelo seu número correspondente, como mostra o exemplo a seguir.

 

Exemplo:

Frase: NO MÊS DE JANEIRO FAZ CALOR.

Nova frase: NO MÊS 01 FAZ CALOR.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem.....Comecei a estudar strings agora,então não sei muita coisa mass ,eu tentei fazer através de comandos de repetições "for" e comandos de decisão "if" uma comparação do caractere inicial da palavra de um mês com cada caractere da frase pra quando ele encontrar um caractere igual ao caractere inicial da palavra ,por exemplo Janeiro, ele examinar as 6 letras seguintes para verificar se também são iguais às letras seguintes da palavra.O problema é qual .....o que fazer para eliminar, a palavra completa,e somente a palavra, caso seja igual, colocar no lugar o número correspondente ao mês.......

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer o seguinte depois que ler string:

 

Separe as palavras por espaço em branco (strtok).

http://www.cplusplus.com/reference/cstring/strtok/

P/ cada palavra que for retornada pelo strtok, faça uma comparação case insensitive (strcasecmp) com os nomes dos meses. Se for igual a algum deles, imprima o número correspondente ao mês. Se não, imprima a palavra retornada.

 

Se for necessário armazenar a nova frase, vc pode declarar um array de char com o mesmo tamanho da frase lida, já que no pior caso não vai ser realizada nenhuma substituição. Aí é copiar o texto correto p/ dentro e não esquecer de fechar com '/0' antes de imprimir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok ~;~;~ ........compreendi e tentei fazer desse jeito porém por algum motivo ,que eu até agora não encontrei ,a saída não está saindo de maneira correta.....o código(código de testes) é o seguinte:

 

#include "stdio.h"
#include "string.h"
char *tokenPtr;
int main()
{
char string[] = "janeiro e fevereiro e março e abril e maio e junho e julho e agosto e setembro e outubro e novembro e dezembro";
int value[12];
tokenPtr = strtok(string, " ,.-");
while(tokenPtr != NULL){
value[0] = strcasecmp(tokenPtr, "janeiro");
value[1] = strcasecmp(tokenPtr, "fevereiro");
value[2] = strcasecmp(tokenPtr, "março");
value[3] = strcasecmp(tokenPtr, "abril");
value[4] = strcasecmp(tokenPtr, "maio");
value[5] = strcasecmp(tokenPtr, "junho");
value[6] = strcasecmp(tokenPtr, "julho");
value[7] = strcasecmp(tokenPtr, "agosto");
value[8] = strcasecmp(tokenPtr, "setembro");
value[9] = strcasecmp(tokenPtr, "outubro");
value[10] = strcasecmp(tokenPtr, "novembro");
value[11] = strcasecmp(tokenPtr, "dezembro");
janeiro(value[0]);
fevereiro(value[1]);
marco(value[2]);
abril(value[3]);
maio(value[4]);
junho(value[5]);
julho(value[6]);
agosto(value[7]);
setembro(value[8]);
outubro(value[9]);
novembro(value[10]);
dezembro(value[11]);
tokenPtr = strtok(NULL , " ,.-");
}
return 0;
}
int janeiro(int value){
if(value == 0)
{
printf("%s\n", "01");
}
}
int fevereiro(int value){
if(value == 0)
{
printf("%s\n", "02");
}
}
int marco(int value){
if(value == 0)
{
printf("%s\n", "03");
}
}
int abril(int value){
if(value == 0)
{
printf("%s\n", "04");
}
}
int maio(int value){
if(value == 0)
{
printf("%s\n", "05");
}
}
int junho(int value){
if(value == 0)
{
printf("%s\n", "06");
}
}
int julho(int value){
if(value == 0)
{
printf("%s\n", "07");
}
}
int agosto(int value){
if(value == 0)
{
printf("%s\n", "08");
}
}
int setembro(int value){
if(value == 0)
{
printf("%s\n", "09");
}
}
int outubro(int value){
if(value == 0)
{
printf("%s\n", "10");
}
}
int novembro(int value){
if(value == 0)
{
printf("%s\n", "11");
}
}
int dezembro(int value){
if(value == 0)
{
printf("%s\n", "12");
}
else
{
printf("%s\n", tokenPtr);
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora deu certo :D ......

 

#include "stdio.h"
#include "string.h"
char *tokenPtr;
int main()
{
char string[] = "Janeiro e Fevereiro e Março e março e Abril e abril e Maio e maio e junho e julho e agosto e setembro e outubro e novembro e dezembro";
int num;
int verdade;
int value[12];
tokenPtr = strtok(string, " ,.-");
while(tokenPtr != NULL){
value[0] = strcasecmp(tokenPtr, "janeiro");
value[1] = strcasecmp(tokenPtr, "fevereiro");
value[2] = strcasecmp(tokenPtr, "março");
value[3] = strcasecmp(tokenPtr, "abril");
value[4] = strcasecmp(tokenPtr, "maio");
value[5] = strcasecmp(tokenPtr, "junho");
value[6] = strcasecmp(tokenPtr, "julho");
value[7] = strcasecmp(tokenPtr, "agosto");
value[8] = strcasecmp(tokenPtr, "setembro");
value[9] = strcasecmp(tokenPtr, "outubro");
value[10] = strcasecmp(tokenPtr, "novembro");
value[11] = strcasecmp(tokenPtr, "dezembro");
janeiro(value[0]);
fevereiro(value[1]);
marco(value[2]);
abril(value[3]);
maio(value[4]);
junho(value[5]);
julho(value[6]);
agosto(value[7]);
setembro(value[8]);
outubro(value[9]);
novembro(value[10]);
dezembro(value[11]);
verdade = strcasecmp(tokenPtr, "janeiro") && strcasecmp(tokenPtr, "fevereiro") && strcasecmp(tokenPtr, "março") && strcasecmp(tokenPtr, "abril") && strcasecmp(tokenPtr, "maio") && strcasecmp(tokenPtr, "junho") && strcasecmp(tokenPtr, "julho") && strcasecmp(tokenPtr, "agosto") && strcasecmp(tokenPtr, "setembro") && strcasecmp(tokenPtr, "outubro") && strcasecmp(tokenPtr, "novembro") && strcasecmp(tokenPtr, "dezembro");
nanterior(verdade);
tokenPtr = strtok(NULL , " ,.-");
}
return 0;
}
int janeiro(int value){
if(value == 0)
{
printf("%s\n", "01");
}
}
int fevereiro(int value){
if(value == 0)
{
printf("%s\n", "02");
}
}
int marco(int value){
if(value == 0)
{
printf("%s\n", "03");
}
}
int abril(int value){
if(value == 0)
{
printf("%s\n", "04");
}
}
int maio(int value){
if(value == 0)
{
printf("%s\n", "05");
}
}
int junho(int value){
if(value == 0)
{
printf("%s\n", "06");
}
}
int julho(int value){
if(value == 0)
{
printf("%s\n", "07");
}
}
int agosto(int value){
if(value == 0)
{
printf("%s\n", "08");
}
}
int setembro(int value){
if(value == 0)
{
printf("%s\n", "09");
}
}
int outubro(int value){
if(value == 0)
{
printf("%s\n", "10");
}
}
int novembro(int value){
if(value == 0)
{
printf("%s\n", "11");
}
}
int dezembro(int value){
if(value == 0)
{
printf("%s\n", "12");
}
}
int nanterior(int verdade)
{
if(verdade != 0)
{
printf("%s\n", tokenPtr);
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso ,se a frase possuir vírgulas, ou outro caractere especial como o - ,como devo fazer para ela aparecer na frase nova???

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Leandro T.
      pessoal bom dia alguém poderia me ajudar com o FormValidation?
       
      "nomefuncionario": {
                  validators: {
                      
                  
                    notEmpty: {
                      message: "Nome completo do funcionário é obrigatório."
                    } , <=== este funciona normalmente
                      
                      callback: {  // agora o callback nao consigo fazer funcionar
                              message: 'este nome não é valido',
                              callback: function (input) {
                                  if (input.value = 'algum valor digitado') {
                                      return true
                                  } }},
                      
                      
                      
                  }
    • Por nathanmoreira
      Após diversos cálculos provindos de um código, recebo um número inteiro ao qual não sei o tamanho ao certo (pode variar de 1 pra frente). Quero passar esse número para string e formatar ele de maneira a colocar um ,00 no final e, a cada 3 números antes da virgula, um ponto. Ou seja, deixar o número num formato como: 45.114.477,00
       
      Como fazer? 
    • Por TK_T
      olá sou iniciante consegui fazer um o código de um exercício só que quando eu peço o valor 12ab ele lê como numérica alguém pode me ajudar? 
      Exercício: Leia uma string e diga se a mesma é numérica (na base decimal) ou não.
      Ex.: "123" -> numérica
      "abc" -> não numérica
      "12ab" -> não numérica
      "12.34" -> numérica 
      #include <stdio.h> int main() { char Numero; printf("Digite Algo: "); scanf("%c", &Numero); if(Numero == '1' || Numero == '2' || Numero == '3' || Numero == '4' || Numero == '5' || Numero == '6' || Numero == '7' || Numero == '8' || Numero== '9' || Numero == '0') printf("\tNumérica...\n"); else printf("\tNão Numérica\n"); return 0; }  
    • Por clayton.lima2020
      Boa Tarde!
       
      Pessoal estou com um problema para resolver:
       
      Tenho um uma string que é um Nome:  SYLVIA
       
      Eu preciso fazer uma uma busca nessa string achar a letra Y e depois verificar se após a letra Y a próxima letra é Vogal ou Consoante.
       
      No caso do nome SYLVIA a próxima letra é L então retorna Consoante.
       
      Alguém sabe montar esse algoritmo ai?
    • Por unset
      Olá, estou com uma pequena dúvida 
       
      Como transformar a data que recebemos com a função date("Y-m-d H:i") em uma string 2021-04-22T00:00 exatamente nesse formato ?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.