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

    non so creare un controllo di variabili in ingresso

    Salve gente, saro' molto grato a chi riuscira' a darmi una mano , nel mio programma dovrei costruire un controllo di tipo variabili in ingresso per riuscire a farlo funzionare sia con i numeri che con le lettere. qualcuno è in grado di farlo???
    ho riportato il mio programma funzionante, dategli anche un'occhiata se vi va cosi' mi fate sapere cosa ne pensate.

    #include<iostream>
    #include<stdio.h>
    typedef int vettore[100];
    using namespace std;
    int v[100], w[100];
    int leggi (int dimensione);
    int scrivi(vettore vet,int dimensione);
    int controlla (vettore vet, int dimensione);
    int elimina (vettore vet, int dimensione);
    int ordina (vettore vet, int dimensione);

    int main(){
    system("COLOR A1");
    char scelta;
    //parte introduttiva al programma
    cout<<"\t\tUNIVERSITA' DEGLI STUDI FEDERICO II- a.a. 2007/08";
    cout<<"\n\n\tCORSO DI INGEGNERIA MECCANICA. ESAME DI ELEMENTI DI INFORMATICA \n";
    cout<<"\t\t\t\t -Prova num.15-";
    cout<<"\n\nProfessore: GIOVANNI SECONDULFO. ";
    cout<<"\nStudente: VAIRO FILIPPO MARIA (matr:535/2112).\n";
    cout<<"\n\n\t\t\tINIZIO PROGRAMMA:\n\n";
    system("pause");
    do{
    int dim;
    bool k;
    system ("cls");
    cout<<"Inserire la dimensione del vettore desiderato:";
    cin>>dim;
    cout<<endl;
    leggi(dim);//chiamata al sottoprogramma che permette di inserire le componenti vettoriali
    cout<<endl;
    cout<<"il vettore inserito e':\n\t";
    scrivi(v,dim);//chiamata al sott.prog. che scrive il vettore desiderato dall'utente
    cout<<endl;
    k=controlla(v,dim);//chiamata al sott.prog. che verifica l'esistenza di elementi doppi
    if(k)elimina(v,dim);//chiamata al sott.prog che elimina le componenti doppie
    else ordina(v,dim);//non ci sono componenti doppie,chiamata al sott.prog
    //che ordina le componenti in ordine decrescente
    cout<<"\n\nRipetere operazione?(s/n)";//possibilita' di ripetere l'operazione
    cin>>scelta;
    }while(scelta=='s');
    return 0;
    }
    // sottoprogramma leggi
    int leggi (int dimensione){
    for (int i=0;i<dimensione;i++){
    cout<<" inserire la componente numero "<<i+1<<" (max 10 cifre):";
    cin>>v[i];}}
    //sottoprogramma scrivi
    int scrivi(vettore vet,int dimensione){
    cout<<"( ";
    for(int i=0;i<dimensione;i++)cout<<vet[i]<<" ";
    cout<<")";}
    //sottoprogramma controlla
    int controlla (vettore vet, int dimensione){
    int alfa;
    alfa=0;
    for(int i=0;i<dimensione-1;i++){
    if (vet[i]==vet[i+1]){
    alfa=1;
    cout<<"\n\t- Attenzione, esistono elementi doppi! - \a\n\n";
    break;}}
    return alfa;}
    //sottoprogramma elimina
    int elimina (vettore vet, int dimensione){
    int p=-1;
    for (int i=0;i<dimensione;i++){
    if (vet[i]==vet[i+1]){
    i++;}
    else if (vet[i]!=vet[i+1]){
    p++;
    w[p]=vet[i];
    }}
    cout<<"il vettore privo degli elementi doppi e':\n\n\t";
    p++;
    scrivi(w,p);}
    //sottoprogramma ordina
    int ordina (vettore vet, int dimensione){
    int scambio;
    for(int i=0;i<dimensione;i++){
    for(int j=dimensione;j>i;j--){
    if(vet[j-1]<vet[j]){
    scambio=vet[j-1];
    vet[j-1]=vet[j];
    vet[j]=scambio;}}}
    cout<<"\n\nil vettore finale V1 ordinato e':\n\t";
    scrivi(vet,dimensione);}

  2. #2

  3. #3

  4. #4
    funzionare con le lettere nel senso di scrivere i numeri in lettere oppure ordinare le lettere?
    printf("Programmazione in C!");
    cout<<"Programmazione in C++!";

  5. #5
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Ciao, ho visto che la funzione 'int controlla (vettore vet, int dimensione)' controlla solamente se ci sono due numeri uguali consecutivi, quindi ti avverte se l'array di valori è {1,2,2,3,4}, ma non ti avverte se l'array è questo: {1,2,3,4,1}. Vuoi che rimanga cosi o che li tolga anche quando non sono consecutivi?

    Se ti va bene così com'è, secondo me non c'è niente da correggere.

    C'è qualcosa di preciso che non ti torna?

  6. #6
    Utente di HTML.it L'avatar di 810106
    Registrato dal
    Jun 2008
    Messaggi
    67
    Originariamente inviato da sotoli
    Ciao, ho visto che la funzione 'int controlla (vettore vet, int dimensione)' controlla solamente se ci sono due numeri uguali consecutivi, quindi ti avverte se l'array di valori è {1,2,2,3,4}, ma non ti avverte se l'array è questo: {1,2,3,4,1}...
    Stessa osservazione.
    All'inizio fai `typedef int vettore[100]' ma `v' e `w' le dichiari come int[100] e non come vettore;

    codice:
    int elimina (vettore vet, int dimensione){
      int p=-1;
      for (int i=0;i<dimensione;i++){
        if (vet[i]==vet[i+1]){
          i++;
       }
       else { // non serve `if (vet[i]!=vet[i+1])'
         p++;
         w[p]=vet[i];
       }
    }
    In teoria il parametro `dimensione' non ti serve nelle funzioni poichè la dimensione del vettore
    la ricavi con `sizeof(vettore)'.

    PS: Non datemi del pignolo!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.