• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Hellblazzer

[C++] Ajuda: 3 progr. c/ alguma urgência

27 mensagens neste tópico

Boas pessoal.

Estou no 12º e tenho uns exercícios para fazer, e estou muito mal com o C++... tive 8 no final do periodo e não consigo fazer isto.  :wallbash:

Os programas são os seguintes (enunciados dos mesmos):

1) Um programa que leia uma sequência alfanumérica do teclado e depois a escreva no ecrã por ordem inversa.

2) Um programa que procure um caracter qualquer, de um input do teclado a sêquencia alfanumérica de 65 caracteres de comprimento. Quando o caracter for encontrado deverá escrever no ecrã, a posição que o mesmo se encontra (no arary de 65). Se o caracter não existir, deve aparecer a mensagem: "Caracter não encontrado!"

3) Dada uma matriz unidimensional de 55 elementos inteiros, pretende-se:

Preencher a matriz de forma a que os elementos de índice par sejam todos iguais a -1.

Desculpem a possível "noobice" disto mas o stor não ajuda muito (quem acreditar muito bem quem não acreditar dispensam-se comentários parvos como já se passou noutro tópico para com o allskin que é meu colega de turma e sabe bem o que se passa).

De qualquer maneira... agradecia muito qualquer ajuda que me possam dar  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hm não era bem isso, eu pretendia para números ou letras, acho que o stor quer que nos fassamos isso de maneira que "simplesmente" seja feito um output "virado do avesso" seja do que for :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hellblazzer, deixa-me só deixar um conselho.

A forma como estás a expor a questão poderá levar muita gente a intrepretar o teu post como um "pedido para te fazerem os trabalhos" e certamente nao será essa a tua ideia, eu precebi, mas pode haver quem assim nao entenda o post.

Devias de expecificar melhor quais as tuas duvidas, e o que já tens feito, etc..

:thumbsup: bons post's! ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hm não era bem isso, eu pretendia para números ou letras, acho que o stor quer que nos fassamos isso de maneira que "simplesmente" seja feito um output "virado do avesso" seja do que for :thumbsup:

Não percebi...  ;)

Já agora,

Para o 2:

Lês o caracter, depois inicializas uma flag a 0 e percorres o array com um for. Cada posição que percorras comparas com o caracter lido e incrementas a flag. Se o caracter lido for igual a posição é o valor da flag.

Para o 3:

Uma forma de testar se um número é par é se o resto da divisão inteira por 2 for 0.

if ((num%2) == 0)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para já obrigado pela ajuda! =D

Hm não era bem isso, eu pretendia para números ou letras, acho que o stor quer que nos fassamos isso de maneira que "simplesmente" seja feito um output "virado do avesso" seja do que for :thumbsup:

Não percebi...  ;)

O stor quer que se declare 1 array string (letras ou números) e que se introduza por exemplo "x007" e no output apareca "700x"!

Já agora,

Para o 2:

Lês o caracter, depois inicializas uma flag a 0 e percorres o array com um for. Cada posição que percorras comparas com o caracter lido e incrementas a flag. Se o caracter lido for igual a posição é o valor da flag.

O que é uma flag? =P

Para o 3:

Uma forma de testar se um número é par é se o resto da divisão inteira por 2 for 0.

if ((num%2) == 0)

E depois, se for como o meto igual a -1 e faço o output disto tudo? =S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hellblazzer, deixa-me só deixar um conselho.

A forma como estás a expor a questão poderá levar muita gente a intrepretar o teu post como um "pedido para te fazerem os trabalhos" e certamente nao será essa a tua ideia, eu precebi, mas pode haver quem assim nao entenda o post.

Devias de expecificar melhor quais as tuas duvidas, e o que já tens feito, etc..

;) bons post's! :)

Eu não quero meter ninguém a trabalhar por mim lolol

Eu basicamente não tenho nada feito pois, para ser sincero, não precebo nada disto, a melhor nota da turma foi 6,3 e foi a minha (como já disse noutro tópico do allskin) =\

Estou à procura num livro que tenho que é o C++ DeMystified "A Self-Teaching Guide" de Jeff Kent mas está grave para encontrar alguma coisa que me ajude realmente  :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma flag é uma variável qualquer. Tipo int var = 0...

Quanto ao 3º não sei, no enunciado que puseste não falas nada de outputs.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, peço desculpa, vou reformular o 3) então:

3) Dada uma matriz unidimensional de 55 elementos inteiros, pretende-se pedir ao user que introduza os 55 elementos e de seguida analisar todos, os que forem pares passam a ser "-1" e será feito o output deles todos (ímpares ficam iguais) e os pares passaram todos a -1.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depois de meter os elementos lá dentro podes fazer:

num = 0;
for (i=0; i<65; i++) {
    num = array[i];
    if((num % 2) == 0) {
        num = -1;
    }
    printf("%d", num);
}

É algo do género mas não testei.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui:

num = array[ i ];

a "array[ i ]" pode ser declarada como:

"int array[];" simplesmente não pode?

E o num é "int num=0;"?

Aqui:

"printf("%d", num);" para que é o "%d" ?

Mais uma vez tks  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O array é o array de que fala o enunciado!

O %d indica que se lê um inteiro mas penso já ter respondido a uma questão destas noutro tópico. Não foi a ti? ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Espera lá... no 1º post dizes que o índice do array é que tem que ser par, e da 2ª vez que expões o problema já dizes que é o seu conteúdo que tem que ser par. Vê lá bem o que é pretendido!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No 1º post eu disse:

3) Dada uma matriz unidimensional de 55 elementos inteiros, pretende-se:

Preencher a matriz de forma a que os elementos de índice par sejam todos iguais a -1.

Elemende de índice par, ou seja, número que formam o array que sejam pares... foi isso que quiz dizer!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas no enunciado que o prof deu fala em índices pares ou em valores pares?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso eu já não tenho a certeza... Mas penso que o que foi feito aqui ele considerou certo.

Quanto ao do output de um array pela ordem inversa tive a ver +- o que podia fazer e vejam o que acham do código (não testei):

#include <iostream.h>
#include <string.h>
#include <stdio.h>
main(){
char x[11];
cout << "Introduza uma sequência alfanumérica de 10 caracteres.";
cin >> x[ i];
for (i=10; i=0; i--){
	cout << x[i];
}
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hellblazzer da próxima vez usa o GeSHi para pôr o código. :(

Se não sabes como fazer vê aqui.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hellblazzer da próxima vez usa o GeSHi para pôr o código. :(

Se não sabes como fazer vê aqui.

Ok obrigado, não sabia disso. Tks por emendarem, já o ia fazer...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok obrigado, não sabia disso. Tks por emendarem, já o ia fazer...

Para a próxima já sabes! :P

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

int main(void) 
{
    char str[10];
    int len;

    printf("Introduza uma sequencia alfanumerica de 10 caracteres: ");

    gets(str);

    len = strlen(str);
    printf("Tamanho da string: %d\nString invertida: ", len);
    
    for(; len >= 0; --len)
    {
       printf("%c", str[len]);
    }

    return 0;
}

Não verifiquei se a string inserida pelo utilizador era válida para não tornar o código mais complicado, penso que assim percebes facilmente! :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que é o "gets"?

É equivalente ao scanf mas não precisas de dizer o número de caracteres que a variável vai receber, em C++ penso que seja o cin.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que é o "gets"?

É equivalente ao scanf mas não precisas de dizer o número de caracteres que a variável vai receber, em C++ penso que seja o cin.

Ah sim, certissimo, é o Cin :(

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que é o "gets"?

É equivalente ao scanf mas não precisas de dizer o número de caracteres que a variável vai receber, em C++ penso que seja o cin.

Ah sim, certissimo, é o Cin :(

Obrigado

eu diria que o scanf é o cin e que o gets é o getline.

de referi que o gets nunca deve ser usado no C e muito menos no C++, pois não controla o número de caracteres introduzido pelo utilizador. em C usamos o fgets e em C++ o getline.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu diria que o scanf é o cin e que o gets é o getline.

de referi que o gets nunca deve ser usado no C e muito menos no C++, pois não controla o número de caracteres introduzido pelo utilizador. em C usamos o fgets e em C++ o getline.

Obrigado pela informação, não sabia que o gets podia ser perigoso para a execução do programa.

Aqui fica então a versão corrigida:

#include <stdio.h>
#include <string.h>
#define SIZE 10

int main(void) 
{
    char str[size+1];
    int len;

    printf("Introduza uma sequencia alfanumerica de %d caracteres: ", SIZE);

    fgets(str, sizeof(str), stdin);

    len = strlen(str);
    
    printf("Tamanho da string: %d\nString invertida: ", len);
    
    for(; len >= 0; --len)
    {
       printf("%c", str[len]);
    }

    return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora