Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] Riordinare stringa e cercare un elemento in essa

    Ciao.
    Io devo fare un programma in c che data una stringa la ordini e cerchi un elemento in essa (l'elemento da cercare č dato in input cosi' come i caratteri della stringa)
    ho creato il listato e dev c++ me lo compila non mi da errori ma quando eseguo dopo che ho immesso i valori nel vettore da errore windows e mi si chiude il programma.
    Allego il codice:
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    #define MAX 100
    void main()
    {
     char vet[MAX],aux,ele;
     int i=0,e,g,j,alto,basso,pos,n;
     do
     {
      printf("Elementi Necessari --> ");
      scanf("%d",&n);
     }
     while((n<0)||(n>99));
     for(i=0;i<=n-1;i++)
     {
      printf("Inserisci %d Elemento --> ",i+1);
      scanf("%s",&vet[i]);
     }
     for(j=0;j<n-1;j++) {
      for(i=0;i<n-1;i++)
       if(vet[i]>vet[i+1])
       {
        aux=vet[i];
        vet[i]=vet[i+1];
        vet[i+1]=aux;
       }
     }
     for(i=0;i<n-1;i++)
      printf("%s \n",vet[i]);
     printf("Elemento da Cercare --> ");
     scanf("%c",&e);
     alto=0; basso=n-1; pos=-1;
     do
     {
      g=(alto+basso)/2;
      if(vet[g]==e)
       pos=g;
      else
       if(vet[g]<e)
        alto=g+1;
       else
        basso=g-1;
     }
     while((alto<=basso)&&(pos==-1));
     if(pos!=-1)
      printf("Elemento trovato nella posizione %d \n",pos);
     else
      printf("Elemento non trovato\n");
     system("PAUSE");
    }
    Qual'č l'errore che ho commesso??? :master:
    P.S.
    non ho fatto in tempo ha mettere i commenti scusate!

  2. #2
    Ragā vi prego rispondetemi che non riesco a risolvere il problema!

  3. #3
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,426
    Ti consiglio di utilizzare pių funzioni, sopratutto con il C che di certo da debuggare non č semplice.

    Il tuo array vet io lo allocherei dinamicamente a seconda di quanti elementi vengono passati, tipo:

    codice:
    int n;
    char* vet;
    scanf("%d", &n);//Elementi necessari
    vet = malloc(sizeof(char) * n);
    L'errore secondo me sta nell'ordinamento:

    codice:
     
    for(j=0;j<n-1;j++) {
      for(i=0;i<n-1;i++)
       if(vet[i]>vet[i+1])
       {
        aux=vet[i];
        vet[i]=vet[i+1];
        vet[i+1]=aux;
       }
    Se io inserisco 4 elementi quando j arriva a 3, ovvero l'ultimo dato visto che parto da 0, l'if farā: vet[3] > vet[4], ma 4 non č parte di memoria del programma, quindi chissā da chi č giā usato l'indirizzo vet + 4

    Per ordinare il tuo vettore credo volevi usare il bubble sort .

    P.S inoltre char ele non č mai usato nel programma, magari serviva per qualcosa e te ne sei dimenticato?

    Imparare č un'esperienza, tutto il resto č solo informazione. (Albert Einstein)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.