Ir ao conteúdo
  • Cadastre-se

voltando a programar em c++


viBetra

Posts recomendados

Olá a todos, sou novo no fórum, mas só em cadastro estando fora o fórum ja me ajudou bastante agora preciso de muita ajuda e resolvi me cadastrar para estudar e fazer novos contatos e amizades também, eu estou cursando ciências da computação, meu curso ficou trancado 2 anos, e fiquei esses 2 anos sem programa também, e estou com muito dificuldades agora na disciplina de Estrutura de Dados I, e com os exercícios que o professor está passando, no caso estou estudando vetores, preciso fazer os seguintes

exercícios:

1) Elabore um programa para ler uma sequência de 30 caracteres. Em seguida localize as vogais e as troque pelo símbolo @. Mostre a nova sequência.

esse eu estou tentando fazer, declarando variavel char sequencia[30], o meu professor usou nas ultimas aulas constantes para declarar os valores sem precisar que o usuário declara-se, só que agora não sei como vou declara-las e como eu uso for nesse caso para ele trocar as vogais para @, tenho que declarar mais uma variavel para isso?

até o momento fiz isso

#include <stdio.h>
#include <conio.h>

int main() {

char s[6];
int i;

for (i=0; i<6; i++) {
printf("Digite um caracter: ");
scanf("%s", &s[i]);

}
printf("A sequencia %s", s[i]);
getch();
}

não sei o q estou fazendo de errado que não está imprimindo a sequencia de caracteres.

imprimi "A sequencia <null>

*acabei de arrumar metade do programa alterei o s, para só s e aparece a sequencia, a dúvida agora como eu vou mudar as vogais para @

2) Escreva um programa que lido uma matriz A(4x4) de números inteiros e uma constante K, encontre a matriz B que é a matriz A que teve sua diagonal principal multiplicada por K.

esse plutz, não sei nem por onde começar, não entendi direito esse negócio de constante, sei que é uma variável que você declara.

3) Dada uma tabela 4x5, calcular a soma de cada linha e a soma de todos os elementos.

esse menos ainda...

alguém poderia acender a luz no fim do túnel me explicar onde estou errando e por onde eu começo o (2) e (3)..

Link para o comentário
Compartilhar em outros sites

vou te explicar o que sei;)

se estas a dizer que vais imprimir 1 string(com o printf()) não podes usar dessa forma;)

printf("A sequencia  %s", s);

assim vais imprimir a string completa. pois indicas a variavel vector. mas se quiseres mostrar o ultimo caracter tens de fazer:

printf("A sequencia  %c", s[i-1]);

porque o i for incrementado apos a saida do for.

ou

printf("A sequencia  %c", s[6-1]);

porque os vectores funcionam de 0 a 6-1. dado que o teu vector tem 6 indeces.

outras dicas:

- o scanf() esta incorrecto para inserires só 1 caracter:

scanf(" %c", &s[i]);

agora vais-me perguntar: porque tenho 1 espaço branco entre aspas e '%'. porque isto é 1 dica dica para limpares o buffer do teclado. senao ao clicares em enter, ele iria assumir esse caracter. e assim o limpas.

porque meti 'c' em vez de 's', porque queres ler 1 caracter.

- se a funçao(main ou outra) é do tipo int ou outro que nao seja void(se nao assumires o tipo ele assume como int) deves, sempre usar o:

return 0

espero ter-te ajuda-do, mais ajuda.. pergunta;)

Link para o comentário
Compartilhar em outros sites

isso ajudou muito, agora estou com dúvida de trocar as vogais por @ pensei em usar o if, mas como vou fazer uma troca de vogais por @?

para quem anda aprender C(EU)... estou mt bem hehehe

#include <stdio.h>
#include <conio.h>

int main() {

char s[6]={'a','b','e', 't', 'o'};
int i;

for (i=0; i<6; i++)
{

if (s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u' || s[i]=='A' || s[i]=='E' || s[i]=='I' || s[i]=='O' || s[i]=='U')
{
s[i]='@';
}
}
printf("A sequencia %s", s);
getch();
return 0;
}

se nao perceberes o codigo diz;)

Link para o comentário
Compartilhar em outros sites

não exatamente esse jeito que eu queria, entendi o que você fez, mas seria para dar a primeira sequencia depois dar uma segunda modificando as vogais por @

desculpa nao percebi. então como querias?

#include <stdio.h>
#include <conio.h>

int main() {

char s[6]={'a','b','e', 't', 'o'};
int i;

printf("A sequencia %s\n", s);

for (i=0; i<6; i++)
{

if (s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u' || s[i]=='A' || s[i]=='E' || s[i]=='I' || s[i]=='O' || s[i]=='U')
{
s[i]='@';
}
}
printf("A sequencia trocada as vogais por '@': %s\n", s);
getch();
return 0;
}

desta forma?

Link para o comentário
Compartilhar em outros sites

é assim...

#include <stdio.h>
#include <conio.h>


int main() {

char s[6];
int i;


for (i=0; i<6; i++) {
printf("Digite um caracter: ");
scanf(" %s", &s[i]);

}
printf("A sequencia %s \n", s);
for (i=0; i<6; i++) {
if (s[i]=='a' || s[i]=='e' || s[i]=='e' || s[i]=='o' || s[i]=='u')
{
s[i]='@';
}
printf(" %s", s);
}
getch();
}

só que na hora de imprimir está imprimindo várias vezes

Link para o comentário
Compartilhar em outros sites

é assim...

#include <stdio.h>
#include <conio.h>


int main() {

char s[6];
int i;


for (i=0; i<6; i++) {
printf("Digite um caracter: ");
scanf(" %s", &s[i]);

}
printf("A sequencia %s \n", s);
for (i=0; i<6; i++) {
if (s[i]=='a' || s[i]=='e' || s[i]=='e' || s[i]=='o' || s[i]=='u')
{
s[i]='@';
}
printf(" %s", s);
}
getch();
}

só que na hora de imprimir está imprimindo várias vezes

querias dizer isto:

#include <stdio.h>
#include <conio.h>


int main() {

char s[6];
int i;


for (i=0; i<6; i++) {
printf("Digite um caracter: ");
scanf(" %s", &s[i]);

}
printf("A sequencia %s \n", s);
for (i=0; i<6; i++)
{
if (s[i]=='a' || s[i]=='e' || s[i]=='e' || s[i]=='o' || s[i]=='u')
{
s[i]='@';
}
printf("%c ", s[i]);
}
getch();
return 0;
}

???

se sim, verifica o printf() e ja ves as 2 diferenças que fiz;)

PS: nunca te esquecas do 'return';)

Link para o comentário
Compartilhar em outros sites

A forma mais simples de procurar determinadas letras numa string, é com a função strchr.

Dessa forma não precisa fazer um IF para cada letra, veja


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

int main(void){
char vog[] = "aeiou";
char texto[] = "um texto qualquer";
int i;

for(i = 0; i < strlen(texto); i++)
if (strchr(vog, texto[i]))
texto[i] = '@';

printf("Texto: %s\n", texto);

return 0;
}

Link para o comentário
Compartilhar em outros sites

A forma mais simples de procurar determinadas letras numa string, é com a função strchr.

Dessa forma não precisa fazer um IF para cada letra, veja


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

int main(void){
char vog[] = "aeiou";
char texto[] = "um texto qualquer";
int i;

for(i = 0; i < strlen(texto); i++)
if (strchr(vog, texto[i]))
texto[i] = '@';

printf("Texto: %s\n", texto);

return 0;
}

1 questao para si: porque o ' i < strlen(texto)' esta-me a dar 1 aviso?(estou a usar i Visual C++ 6)?

Link para o comentário
Compartilhar em outros sites

Qual aviso? Quando compilei não houve nenhum aviso.

Estou usando o gcc no Linux.

"--------------------Configuration: test - Win32 Debug--------------------

Compiling...

test.cpp

C:\Users\Joaquim\Documents\Visual C 98\test\test.cpp(9) : warning C4018: '<' : signed/unsigned mismatch

Linking...

test.exe - 0 error(s), 1 warning(s)"

eu estou a usar Visual C++ 6 no windows

Link para o comentário
Compartilhar em outros sites

"--------------------Configuration: test - Win32 Debug--------------------

Compiling...

test.cpp

C:\Users\Joaquim\Documents\Visual C 98\test\test.cpp(9) : warning C4018: '<' : signed/unsigned mismatch

Linking...

test.exe - 0 error(s), 1 warning(s)"

eu estou a usar Visual C++ 6 no windows

Faça um teste com size_t.

por exemplo, troque int i por size_t i

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...