+ Responder ao Tópico



  1. Galera eu tenho um certo problema com passagens de informacoes para funcoes.


    segue um exemplo pratico da faculdade, eu entreguei meu trabalho assim, mas se voces puderem me ajudar e dividir em funcoes. detalhe tah para windows.

    valeu

    //Funcao principal
    int main()
    {
    //Declaracao de variaveis tipo char apontando para a memoria
    char *nome[53];
    char *snome[46];
    //variaveis usadas para contador e rand
    int i,j,k,l;
    //Lista de Nomes
    nome[0]="Adilson";
    nome[1]="Amanda";
    nome[2]="Bernardo";
    nome[3]="Bianca";
    nome[4]="Charles";
    nome[5]="Camila";
    nome[6]="Dionisio";
    nome[7]="Diana";
    nome[8]="Ernesto";
    nome[9]="Ester";
    nome[10]="Floriano";
    nome[11]="Fernanda";
    nome[12]="Gevasio";
    nome[13]="Gabriela";
    nome[14]="Helber";
    nome[15]="Helena";
    nome[16]="Ivan";
    nome[17]="Ivanir";
    nome[18]="Juliano";
    nome[19]="Jandira";
    nome[20]="Kervin";
    nome[21]="Karina";
    nome[22]="Luzimar";
    nome[23]="Leila";
    nome[24]="Mario";
    nome[25]="Mercedes";
    nome[26]="Nilson";
    nome[27]="Nadia";
    nome[28]="Oscar";
    nome[29]="Olivia";
    nome[30]="Paulo";
    nome[31]="Patricia";
    nome[32]="Quincas";
    nome[33]="Quiteria";
    nome[34]="Raul";
    nome[35]="Rosana";
    nome[36]="Salvio";
    nome[37]="Samanta";
    nome[38]="tadeu";
    nome[39]="Talita";
    nome[40]="Ubirajara";
    nome[41]="Ursula";
    nome[42]="Vladimir";
    nome[43]="Viviane";
    nome[44]="Xavier";
    nome[45]="Xenia";
    nome[46]="Yuri";
    nome[47]="Yasmin";
    nome[48]="Wilson";
    nome[49]="Wilma";
    nome[50]="Zacarias";
    nome[51]="Zaira";
    //Lista de Sobrenomes
    snome[0]="Alvares";
    snome[1]="Almeida";
    snome[2]="Bernardes";
    snome[3]="Bortoletto";
    snome[4]="Camargo";
    snome[5]="Cicarelli";
    snome[6]="Damasco";
    snome[7]="Dirceu";
    snome[8]="Ernesto";
    snome[9]="Elali";
    snome[10]="Fernades";
    snome[11]="Ferreira";
    snome[12]="Garcia";
    snome[13]="Germano";
    snome[14]="Honda";
    snome[15]="Haussen";
    snome[16]="Ivo";
    snome[17]="Iwer";
    snome[18]="King";
    snome[19]="Korch";
    snome[20]="Lima";
    snome[21]="Leite";
    snome[22]="Massarenti";
    snome[23]="Martinez";
    snome[24]="Nogueira";
    snome[25]="Nunes";
    snome[26]="Oliveira";
    snome[27]="Otto";
    snome[28]="Passos";
    snome[29]="Pedroso";
    snome[30]="Quercia";
    snome[31]="Queiros";
    snome[32]="Rosa";
    snome[33]="Rincon";
    snome[34]="Silva";
    snome[35]="Silveira";
    snome[36]="Teixeira";
    snome[37]="Torres";
    snome[38]="Uber";
    snome[39]="Unser";
    snome[40]="Vargas";
    snome[41]="Vaz";
    snome[42]="Walter";
    snome[43]="Willy";
    snome[44]="Xavier";
    snome[45]="Zannata";
    snome[46]="Zoratto";
    printf("Teste do gerador de nomes aleartorios\n\n");
    //contador para o rand
    for(i=0; i<10; i++)
    {
    j=rand()%51;
    k=rand()%46;
    l=rand()%46;
    printf(" %d %s %s %s\n",i,nome[j],snome[k],snome[l]);
    }
    printf("\n\n\n");
    system("PAUSE");
    return 0;
    }

  2. Eu estou um pouco enferrujado em C/C++, mas assim que chegar em casa eu vou responder sua pergunta. Até deixei um bookmark aqui.



  3. cara eu entreguei esse meu trabalho mas se você puder me responder informando sobre isso como eu faço as funcoes passandos o vetores.


    abraços


    Nilson

  4. Cara uma forma de fazer isso seria assim...
    Cria uma variável global nome e sobre nome, uma função que retorne os nomes aleatórios dado um limite e o main...
    Código :
    //Variáveis Globais;
    char *nome[53];
    char *snome[46];
    //Lista de nomes
    void inicia_nomes(){
        nome[0]="Adilson";
        nome[1]="Amanda";
        nome[2]="Bernardo";
        nome[3]="Bianca";
        nome[4]="Charles";
        nome[5]="Camila";
        nome[6]="Dionisio";
        nome[7]="Diana";
        nome[8]="Ernesto";
        nome[9]="Ester";
        nome[10]="Floriano";
        nome[11]="Fernanda";
        nome[12]="Gevasio";
        nome[13]="Gabriela";
        nome[14]="Helber";
        nome[15]="Helena";
        nome[16]="Ivan";
        nome[17]="Ivanir";
        nome[18]="Juliano";
        nome[19]="Jandira";
        nome[20]="Kervin";
        nome[21]="Karina";
        nome[22]="Luzimar";
        nome[23]="Leila";
        nome[24]="Mario";
        nome[25]="Mercedes";
        nome[26]="Nilson";
        nome[27]="Nadia";
        nome[28]="Oscar";
        nome[29]="Olivia";
        nome[30]="Paulo";
        nome[31]="Patricia";
        nome[32]="Quincas";
        nome[33]="Quiteria";
        nome[34]="Raul";
        nome[35]="Rosana";
        nome[36]="Salvio";
        nome[37]="Samanta";
        nome[38]="tadeu";
        nome[39]="Talita";
        nome[40]="Ubirajara";
        nome[41]="Ursula";
        nome[42]="Vladimir";
        nome[43]="Viviane";
        nome[44]="Xavier";
        nome[45]="Xenia";
        nome[46]="Yuri";
        nome[47]="Yasmin";
        nome[48]="Wilson";
        nome[49]="Wilma";
        nome[50]="Zacarias";
        nome[51]="Zaira";
        //Lista de Sobrenomes
        snome[0]="Alvares";
        snome[1]="Almeida";
        snome[2]="Bernardes";
        snome[3]="Bortoletto";
        snome[4]="Camargo";
        snome[5]="Cicarelli";
        snome[6]="Damasco";
        snome[7]="Dirceu";
        snome[8]="Ernesto";
        snome[9]="Elali";
        snome[10]="Fernades";
        snome[11]="Ferreira";
        snome[12]="Garcia";
        snome[13]="Germano";
        snome[14]="Honda";
        snome[15]="Haussen";
        snome[16]="Ivo";
        snome[17]="Iwer";
        snome[18]="King";
        snome[19]="Korch";
        snome[20]="Lima";
        snome[21]="Leite";
        snome[22]="Massarenti";
        snome[23]="Martinez";
        snome[24]="Nogueira";
        snome[25]="Nunes";
        snome[26]="Oliveira";
        snome[27]="Otto";
        snome[28]="Passos";
        snome[29]="Pedroso";
        snome[30]="Quercia";
        snome[31]="Queiros";
        snome[32]="Rosa";
        snome[33]="Rincon";
        snome[34]="Silva";
        snome[35]="Silveira";
        snome[36]="Teixeira";
        snome[37]="Torres";
        snome[38]="Uber";
        snome[39]="Unser";
        snome[40]="Vargas";
        snome[41]="Vaz";
        snome[42]="Walter";
        snome[43]="Willy";
        snome[44]="Xavier";
        snome[45]="Zannata";
        snome[46]="Zoratto";     
    }
     
     
     
    char *nome_rand(int limite, bool primeiro){
    	int x = rand()%limite;
    	if(primeiro)
    		return nome[x];
    	else
    		return snome[x];
    }
     
     
    int main(int argc, char *argv[])
    {
        srand ( time(NULL) );
        inicia_nomes();
        printf("Teste do gerador de nomes aleartorios\n\n");
    	for(int i=0; i<10; i++)
    	{
    		printf(" %d %s %s %s\n",i,nome_rand(51,true),nome_rand(46,false),nome_rand(46,false));
    	}
    	printf("\n\n\n");
    	system("PAUSE");
        return 0;
    }

    Se as variáveis nome e snome forem colocadas dentro da função nome_rand elas serão criadas e destruídas toda vez que chamar a função... Isso gasta tempo e gera lixo na memória... Por isso as coloquei como globais.

    Só mais uma última coisa, a função rand não é muito confiável...Ela geralmente cria números aleatórios repetidos devido a semente utilizada... Uma boa ideia é mudar essa semente utilizando a função srand. Por isso aquela linha srand ( time(NULL) ). Ela atribui os segundos da hora naquele instante como sendo a semente... Dessa forma a função rand se torna mais, digamos, randômica!

    Espero que seja o suficiente...



  5. Olha, continuo não tendo tempo para rever uns conceitos sobre C, mas eu vou fazer alguns comentários sobre o seu código-fonte.

    1 - Você não precisa se castrar para declarar todos esses elementos dessa forma. Seria bem interessante fazer desta forma, não?

    Código :
    #include <stdio.h>
    #include <stdlib.h>
     
    #define LIM 5	// Quantidade de nomes/sobrenomes
    #define LEN 50	// Tamanho da string
     
    void main(){
    	char nomes[LIM][LEN]={"Joaozinho","Mariazinha","Joaninha","Fulaninho","Viadinha"};
    	char sobrenomes[LIM][LEN]={"Silva","Sauro","Souza","Cruz","Martins"};
    }

    Existe uma forma de otimizar esse código, mas de cabeça eu não lembro, utilizando matrizes de strings e fazendo o apontamento por ponteiros. Desta forma, é alocada menos memória (embora seja mais sacal de fazer).

    Se bem me lembro também, strings são tratadas de uma maneira um pouco diferente dos outros tipos de variáveis, a partir do momento que uma string é, na prática, quase um vetor de caracteres. E um vetor nada mais é que um elemento built-in da linguagem C onde é apontado o endereço do primeiro elemento e então ele vai fazendo o salto N bits depois do último elemento de memória (Onde N é o tamanho de memória que o tipo de variável ocupa). Sendo assim, acho que se passarmos uma string para uma função, a linguagem já altera os elementos dentro, sem ter que fazer uso de ponteiros, porque strings já são ponteiros por natureza. Corrijam-me se eu estiver errado, por favor. Faz alguns meses que eu não mexo com C e eu não tenho um compilador em mãos para fazer os devidos testes.

    Mas se o seu intuito de primeira era demonstrar a utilização dos argumentos para funções e efetivamente alterá-los, eu recomendaria que você começasse pelo mais fácil, que seria trabalhar com inteiros apenas. Lembre-se que quando passamos argumentos para funções em C, na verdade passamos seus valores para uma outra variável, não alterando o conteúdo da variável original. Para alterarmos o conteúdo da variável original, você deve saber que fazemos uso de ponteiros.

    Mas, como eu disse, eu estou enferrujado na linguagem. Novamente: CORRIJAM-ME SE EU ESTIVER ERRADO!

    Abraços!






Tópicos Similares

  1. Script para pegar resposta de ping e executar função.
    Por easyBSD no fórum Linguagens de Programação
    Respostas: 3
    Último Post: 24-07-2007, 10:32
  2. De AT para ATX.
    Por Lucifer no fórum Servidores de Rede
    Respostas: 5
    Último Post: 13-10-2003, 08:13
  3. Dificuldades em migração de softwares de Delphi para Kylix.
    Por Francisco no fórum Linguagens de Programação
    Respostas: 5
    Último Post: 14-11-2002, 08:42
  4. placa de rede para de funcionar
    Por ediguedes no fórum Servidores de Rede
    Respostas: 4
    Último Post: 03-10-2002, 13:24
  5. Script de conexão para o Samba
    Por ebonder no fórum Servidores de Rede
    Respostas: 4
    Último Post: 30-09-2002, 15:24

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L