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

    [C++]Ordinamento e controllo stringhe

    Ciao ragazzi,vi scrivo per un problema
    Devo realizzare un programmino che date n stringhe,ad ogni stringa mi effettui il controllo per vedere se i caratteri inseriti non siano ne numeri,ne simboli strani.
    e successivamente mi ordini le stringhe in ordine crescente o decrescente,in base a quello che preferisce l'utente
    ora: per quanto riguarda l'ordinamento ci sono,e anche per quanto riguarda l'algoritmo per il controllo ci sono,ma non so come inserirlo in una funzione,perchè è questo che dovrei fare.
    vi posto il codice così magari capite meglio cosa intendo.

    codice:
    #include<stdio.h>
    #include<iostream>
    #include<conio.h>
    #include<string.h>
    
    #define dim 5
    
    using namespace std;
    void controllo();
    main()
    
    {
        char a[dim][15];
        char temp[15];
        int flag=1,k=dim-1,i,scelta;
        
        cout<<"Controllo e ordinamento stringhe";
        cout<<"\n--------------------------------\n\n\n";
        
        for(i=0;i<dim;i++){
                            cout<<"\n- Inserisci stringa numero "<<i<<": ";
                            cin>>a[i];
                            controllo();
                            }
                            
                            cout<<"\nPremere 1 per ordine crescente oppure 2 per ordine decrescente: ";
                            cin>>scelta;
        switch(scelta){case 1:	
                                while(flag==1 && k>0){
                                flag=0;
                                for(i=0;i<k;i++){
                                                    if(strcmp(a[i],a[i+1])>0){
                                                                                strcpy(temp,a[i+1]);
                                                                                strcpy(a[i+1],a[i]);
                                                                                strcpy(a[i],temp);
                                                                                flag=1;
                                                                            }
                                            }
                                k=k-1;
                            }
       					break;
                      case 2:	
                                while(flag==1 && k>0){
                                flag=0;
                                for(i=0;i<k;i++){
                                                    if(strcmp(a[i],a[i+1])<0){
                                                                                strcpy(temp,a[i+1]);
                                                                                strcpy(a[i+1],a[i]);
                                                                                strcpy(a[i],temp);
                                                                                flag=1;
                                                                            }
                                            }
                                k=k-1;
                            }
       					break;
                      default:cout<<"\nErrore: le scelte possibili sono 1 o 2";
                      }
                                                                                
        for(i=0;i<dim;i++){
                            cout<<a[i]<<"\n";
                            }
                            getch();
    }void controllo(){
                        
                        int lung=0,flag=1,i;
                        lung=strlen(a);
                                for(i=0;i<lung;i++){
                                                    a[i]=tolower(a[i]);
                                                    }
                                if(lung+1>15){
                                                cout<<"\nErrore: Dimensione non consentita";
                                                }
                                while((i<lung) && flag){
                                                        if(a[i]<97 && a[i]>122){
                                                                                        flag=0;
                                                                                        cout<<"\n"<<a[i]<<" Carattere non valido";
                                                                                     }
                                                        i++;
                                                        }
                            }

  2. #2
    Forse non ho ben capito il problema, tu vuoi sapere come mettere tutto in una o più funzioni il codice scritto in main?

    Se è così
    farei una funzione che si chiama
    inserisciStringa() chiamata da un ciclo, oppure puoi anche mettere il ciclo all'interno e passare l'array.

    poi farei una funziona ordina() che effettua solo l'ordinamento ricevendo in input l'array non ordinato e ritornandoti l'array ordinato.
    Joe Taras -
    http://www.casadelproverbio.it
    http://www.ruscianovincenzo.it

    Famiglia Riva e Ministro Clini - ASSASSINI AUTORIZZATI DALLO STATO ITALIANO - TARANTO LIBERA!

  3. #3
    no in pratica vorrei inserire all0pinterno di una funzione solo il controllo sulle stringhe,e se noti l'algoritmo per il controllo l'ho inserito nella funzione controllo.
    ho messo il prototipo prima del main,la chiamata dopo ogni inserimento di una stringa,e il corpo dopo il main.
    il problema credo stia nel fatto che non so se sia giusto "void controllo" e non so cosa mettere all'interno delle parentesi tonde della funzione.
    inoltre credo di aver sbagliato qualcosa con le variabili all'interno della funzione stessa

  4. #4
    Per come hai scritto il codice controllo lo esegui per ogni carattere digitato, quindi devi passare a controllo a[i], scrivendo controllo(a[i]).

    Quando definisci controllo devi esplicitare il parametro da controllare, quindi scrivere così

    controllo(char cDaControllare)

    Inoltre una funzione di controllo in genere non ritorna un void ma un bool (true se il controllo è andato bene, false altrimenti).

    Dentro la funzione controllo tu fai lung=strlen(a); ma a non è definita da nessuna parte (idem per a[i].

    Inoltre per come viene chiamata controllo la lunghezza è sempre pari a 1 essendo un carattere.
    Joe Taras -
    http://www.casadelproverbio.it
    http://www.ruscianovincenzo.it

    Famiglia Riva e Ministro Clini - ASSASSINI AUTORIZZATI DALLO STATO ITALIANO - TARANTO LIBERA!

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.