Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
paulo leal

C O problema da revisão de contrato

Recommended Posts

O problema da revisão de contrato: Durante anos, todos os contratos da Associação de
Contratos da Modernolândia (ACM) foram datilografados em uma velha máquina de
datilografia. Recentemente Sr. Miranda, um dos contadores da ACM, percebeu que a
máquina apresentava falha em um, e apenas um, dos dígitos numéricos. Mais
especificamente, o dígito falho, quando datilografado, não é impresso na folha, como se a
tecla correspondente não tivesse sido pressionada. Ele percebeu que isso poderia ter
alterado os valores numéricos representados nos contratos e, preocupado com a
contabilidade, quer saber, a partir dos valores originais negociados nos contratos, que ele
mantinha em anotações manuscritas, quais os valores de fato representados nos contratos.
Por exemplo, se a máquina apresenta falha no dígito 5, o valor 1500 seria datilografado no
contrato como 100, pois o 5 não seria impresso. Note que o Sr. Miranda quer saber o valor
numérico representado no contrato, ou seja, nessa mesma máquina, o número 5000
corresponde ao valor numérico 0, e não 000 (como ele de fato aparece impresso).


Faça um programa que recebe como entrada diversos valores de contrato, cada um em uma
linha. Cada linha contém dois inteiros D e N (1 ≤ D ≤ 9, 1 ≤ N < 10100 ), representando,
respectivamente, o dígito que está apresentando problema na máquina e o número que foi
negociado originalmente no contrato (que podem ser grande, pois Modernolândia tem sido
acometida por hiperinflação nas últimas décadas).
O ultimo valor é seguido por uma linha que contém apenas dois zeros separados por
espaços em branco, para representar o fim da entrada.


Para cada caso valor da entrada o seu programa deve imprimir uma linha contendo um único
inteiro V, o valor numérico representado de fato no contrato. Veja o exemplo de entrada e
seguida a seguir.

image.png.b9238e216fc00a48821d000a9c76920c.png

alguém pode me ajudar com essa questão olha o que eu fiz

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

int main() {
    char contrato[10100];
    int i,j,tecla,copia[10100];
    printf("Digite a tecla com defeito e o numero de contrato");
    scanf("%d",&contrato);
    for(i=0; i<strlen(contrato); i++){
        tecla=contrato[0];
        copia[i]=atoi(contrato);
        for(j=3; j<strlen(contrato); j++){
            if(tecla==copia[j]){
                copia[j]=copia[j+1];
                printf("%d",copia[j]);
            }
        }
    }
    getchar();
}

mas não da em nada

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@paulo leal     essa questão está no uri online e olhei aqui e vi que o número dela é 1120 .    então fiz esse código no dev c++ da versão 4.9.9.2, e ficou bem diferente do seu,  e ainda não testei,  então experimente para ver se resolve .

#include <cstdio>
#include <cstring>
char *removerCaractere(char *arr, char d)
{
    int i;
    // remove digitos
    for (i = 0; i < strlen(arr); i++)
    {
        if (arr[i]-48 == d)
        {
            if (strlen(arr) == 1)
            {
                arr[0] = '0';
            }
            else
            {
                memmove(&arr[i], &arr[i+1], strlen(arr)-i);
                i = -1;
            }
        }
    }
    // limpa os zeros à esquerda
    for (i = 0; i < strlen(arr); i++)
    {
        if (arr[i] >= '1' && arr[i] <= '9')
        break;
        if (strlen(arr) == 0)
        {
            arr[0] = '0';
        }
        else
            if(arr[i+1] != '\0')
            {
                memmove(&arr[i], &arr[i+1], strlen(arr)-i);
                i = -1;
            }
    }
    return arr;
}
int main()
{
    int d=1,i;
    char *n = new char [1001];
    while (!(d == 0 && n[0] == '0'))
    {
        scanf("%d %s", &d, n);
        if (d != 0 && n[0] != '0')
        {
            n = removerCaractere(n, d);
            printf("%s\n",n);
        }
    }
    return 0;
}

 

Editado por devair1010

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Eu tava tentando aqui e conseguir resolver olha ai o codigo:

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

int main ( ) {
    int tam, i, zero, aux;
    char entrada[10100], N;
    while ( 1 ) {
        scanf ( "%c\n", &N );
        scanf ( "%s", entrada );
        if ( N == '0' || strcmp ( entrada, "0" ) == 0 )
            return 0;
        tam = strlen ( entrada );
        aux = 1, zero = 0;
        for ( i=0; i<tam; i++ ) {
            if ( entrada[i] == '0' && zero == 2 )
                printf ( "%c", entrada[i] );
            if ( entrada[i] != '0' && N!='0' && entrada[i] != N ) {
                printf ( "%c", entrada[i] );
                aux = 0;
                zero = 2;
            }
        }
        if ( N!= '0' && aux == 1 && zero == 1 ) {
            printf ( "0" );
        }else if ( N!='0' && aux == 1 )
            printf ( "0" );
        puts ( "" );
        getchar();
    }
}

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz uma conta no URI e 

10 horas atrás, paulo leal disse:

Eu tava tentando aqui e conseguir resolver olha ai o codigo

Parabéns passou 100%

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×