Pages

segunda-feira, 14 de fevereiro de 2011

Estrutura de Dados

Depois de uma breve revisão com o João Paulo (professor da matéria) tivemos alguns exemplos de ponteiros para serem estudados.
Estava eu tranquilamente no meu msn quando a Karen me chamou comentando sobre o erro no exemplo 3, e eu como um bom
nerd
aluno resolvi dar uma olhada.

Bom, vamos lá..
a principio me deparei com o exemplo:

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

int converte(char* x, char* y){
if(strlen(x)==strlen(y)){
char aux[strlen(x)];
int i;
for(i=0;i<strlen(x);i++){
aux[i]=x[i];
x[i]=y[i];
y[i]=aux[i];
}
return 1;
}
else
return 0;
}

int main(){
char a[100];
char b[100];
printf("Digite a primeira palavra: ");
scanf("%s",a);
printf("Digite a segunda palavra: ");
scanf("%s",b);
// printf("\nRetorno da função: ",converte(a,b));
printf("\nPrimeira palavra: ", a);
printf("\nSegunda palavra: ", b);
printf("\n");
//system("pause");
}

Por alto alguns erros são bem visiveis, talvez por um pouco de distração do João Paulo na hora de criar o código. Depois de procurar entender a utilidade do algoritimo e fiz umas correções que no fim fez tudo dar certo:


#include <stdio.h>
#include <stdlib.h>
#include <sting.h>
/* Funçao:
Pega as duas palavras digitadas, caso sejam do mesmo tamanho, ele troca a primeira palavra pela segunda e retorna 1, caso sejam diferentes
mostra normalmente na mesma ordem e tem como retorno um 0:
Ex.:
Primeira Palavra: sol
Segunda Palavra: bom

O programa deve mostrar "bom" como a primeira palavra e "sol" como a segunda palavra, alem de mostrar no retorno um 1;
*/
int converte(char *x, char *y){
if(strlen(x)==strlen(y)){
char aux[strlen(x)];
int i;
for(i=0;i<strlen(x);i++){
aux[i]=x[i];
x[i]=y[i];
y[i]=aux[i];
}
return 1;
}
else
return 0;
}

int main(){
char a[100];
char b[100];
printf("Digite a primeira palavra: ");
// Troquei por gets pra ficar mais pratico
gets(a);
printf("Digite a segunda palavra: ");
gets(b);
// Faltava os %d no retorno da funçao, alem do & para passar endereço de memoria pro ponteiro da função
printf("\nRetorno da funcao: %d", converte(&a, &b));
// Faltava os %s nos printf
printf("\nPrimeira palavra: %s", a);
printf("\nSegunda palavra: %s", b);
printf("\n");
}

É normal isso acontecer, muitas vezes passamos por despercebidos em pequenos detalhes que podem afetar o desenvolver do software. Espero ter ajudado de alguma maneira.

Um comentário:

  1. lindo e pratico, porem sem segurança como qualquer programinha meia bosta da c+++ otimo para nos quebrarmos a segurança e fazer cracks, e keygens pelo amor de deus a programaçao que a uemg ensina ate meu irmao de 13 anos faz, quer linguagem de programaçao ai vai assembly, java e shell + php 5 lumine, e viva linux ja que a uemg tambem nao ensina lamentavel

    ResponderExcluir