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

    [C++] Quesito con array

    Devo realizzare questa funzione ma sono solo al punto zero per quanto riguarda la programmazione, chi mi dà una mano consistente?


    Si scriva un programma che presi da tastiera due array, uno di N caratteri (chiamiamolo array IN) e l’altro di N interi (array KEY), stampi a video un terzo array di caratteri (array OUT) che contiene una combinazione dei caratteri contenuti in IN secondo le posizioni indicate dal contenuto di KEY. Durante l’inserimento bisogna che il programma segnali l’inserimento in KEY di un valore non valido (cioè non compreso tra 0 e N-1) e lo rifiuti chiedendo l’inserimento di un valore valido. Alla fine KEY deve contenere solo numeri validi.
    Per esempio, se la cella KEY[0] contiene il NUMERO 7 allora la cella OUT[0] conterrà il valore della cella IN[7]. Questa parte del programma deve essere implementata con una funzione che dati in ingresso i due array IN e KEY restituisce in uscita l’array OUT.


    Grazie Maurizio

  2. #2
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    codice:
    int size = 10;
    int pos[size];
    char letter[size];
    char final[size];
    
    for(int i=0;i<size;i++)final[i]='a';
    for(int i=0;i<size;i++){
     cout << "inserisci valore " << i <<": " <<endl; 
     cin >> pos[i];
     if(final[pos[i]]=='a')final[pos[i]]='b';
     else {cout << "errore posizione già immessa";return 0;}
    }
    for(int i=0;i<size;i++){
     cout << "inserisci lettera " << i <<": " <<endl; 
     cin >> letter[i];
    }
    for(int i=0;i<size;i++)final[i]=letter[pos[i]];
    Versione veramente mooolto bruta che si può raffinare moltissimo, però dovrebbe indirizzarti....(in effetti non ho provato nemmeno se funge, potrebbe esserci qualche errore? )
    Ciao
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  3. #3
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Questa funziona:
    codice:
    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
     int size = 3;
     int pos[size];
     char letter[size];
     char final[size];
    
     for(int i=0;i<size;i++)final[i]='a';
     for(int i=0;i<size;i++){
       cout << "Inserisci valore " << i <<"-esima: " <<endl; 
       cin >> pos[i];
       if(final[pos[i]]!='a' | pos[i]<0 | pos[i]>size) {
         cout << "Errore posizione non valida";
         return 0;
         system("PAUSE");
        }
       else final[pos[i]]='b';
      }
     for(int i=0;i<size;i++){
       cout << "Inserisci lettera " << i <<"-esima: " <<endl; 
       cin >> letter[i];
      }
     for(int i=0;i<size;i++)final[i]=letter[pos[i]];
     for(int i=0;i<size;i++)cout << final[i] <<endl;
     system("PAUSE");	
     return 0;
    }
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  4. #4

    sono a pezzi

    Ti sarei grato se spendessi ancora del tempo per me, visto che ho la necessità di consegnare il tutto entro domani con la promessa di non chiedere mai più codice fatto ma eventualmente solo correzioni.Tornando a al problema ho la necessità di avere effettivamente qualcosa che funzioni poichè non sono in grado di fare significative correzioni.

    Grazie
    Maurizio

  5. #5

    esempio

    Esempio:
    array IN: f f e b s u w c g r
    array KEY: 2 6 1 3 3 6 9 2 0 4
    il risultato a video sarà
    array OUT : e w f b b w r e f s


    grazie

  6. #6
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Quello che ti ho postato è un esempio funzionante, differisce da quello che dici tu solo del fatto che opera un controllo anche del fatto che la stessa posizione non possa essere specificata 2 volte nell'array di interi...levando quella modifica il codice si emplifica ulteriormente:
    codice:
    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
     int size = 10;
     int pos[size];
     char letter[size];
     char final[size];
    
     for(int i=0;i<size;i++){
       cout << "Inserisci valore " << i <<"-esima: " <<endl; 
       cin >> pos[i];
       if(pos[i]<0 | pos[i]>size) {
         cout << "Errore out of range";
         return 0;
         system("PAUSE");
        }
      }
     for(int i=0;i<size;i++){
       cout << "Inserisci lettera " << i <<"-esima: " <<endl; 
       cin >> letter[i];
      }
     for(int i=0;i<size;i++)final[i]=letter[pos[i]];
     for(int i=0;i<size;i++)cout << final[i] <<endl;
     system("PAUSE");	
     return 0;
    }
    Questo funziona perfettamente con l'esempio da te postato.
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  7. #7

    scusa ma...

    Devo chiederti scusa ma a questo punto devo sapere...

    Se compilo il file e lo eseguo mi esce l'output:
    Inserisci valore 0-esima, 0k inserisco i numeri ( anche se dovrei inserire prima le lettere) e premo enter ogni volta fino a raggiungere size poi tocca alle lettere e premo enter ogni volta
    ed infine ho il risultato.Ti faccio alcune domande?

    Perchè non posso inserire tutte le lettere insieme anche considerando che possono essere separate da spazi , poi inserire i numeri con valori compresi tra 0 e N-1( però non voglio che il programmi mi butti fuori ma solo che mi avverta che il numero non è valido) ed infine avere il risultato a video su una stessa riga?

    Se ho chiesto troppo ti chiedo scusa ma è solo per restare fedele al compito ( array)

  8. #8
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Ti ho detto che la versione è molto brutale, va perfezionata, mi spiace ma non ho tempo....
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  9. #9

    grazie

    Grazie lo stesso

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