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

    [C]Stringhe .funzioni e array multidimensionali

    Salve a tutti,
    questa è la funzione che dovrebbe acquisire tre stringhe e metterle nello stesso vettore multidimensionale..(dim = 3 quindi)

    codice:
    void acquisisci(char * vettore[][N],int dim){
        int i;
      for (i=0; i<dim; i++){
        fgets(&vettore[i][0], dim, stdin);
        printf("ok");
      }
    
    }


    Grazie in anticipo..

  2. #2
    ... e la domanda è?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Perchè non funziona.
    Non salva i valori che deve.
    Credevo bastasse un'occhiata veloce di un esperto per capire dove sbaglio.
    codice:
    //Si scriva un programma che acquisisca 3 stringhe, ciascuna contenente il
    //nome di un prodotto e il relativo prezzo separati da spazio. Una volta
    //memorizzate queste informazioni in opportune variabili, il programma
    //riceve un’ulteriore stringa contente un nome di prodotto e un valore intero
    //corrispondente ad una quantità.
    //Il programma deve:
    //a. Stabilire se il prodotto inserito per ultimo corrisponde ad uno dei
    //prodotti memorizzati in precedenza
    //b. In caso negativo, richiedere un altro inserimento di nome prodotto e
    //quantità
    //c. In caso positivo, calcolare e visualizzare il costo totale moltiplicando
    //quantità e prezzo del prodotto in questione
    
    // realizzo questo programma senza usare le strutture
    #include <stdio.h>
    #include <stdlib.h>
    #define N 70 //dimensione riga nome_prodotto + prezzo
    
    void acquisisci(char * vettore[][N],int dim);
    
    int main()
    {
        char testo[3][N];
        //3: 3 colonne, cioe' nome prezzo quantita'
        char tabella[3][3][N];
    
        int i,j;
        printf("Inserisci: nome prodotto e prezzo, separati da spazio\n");
    
        for(i=0;i<3;i++){
          //grezza acquisizione.........
          fgets(&testo[i][0], N, stdin);
    
          //purifico l'input.....mi aspetto 2 parole.
            sscanf(&testo[i][0], "%s %s",&tabella[i][0][0], &tabella[i][0][1] );
    
    
          }//fine ciclo purificazione
    
        //MOSTRO:
    
        printf("\n\n");
        for( i= 0, j=0; i<3; i++,j++)
        printf("%s .....%s\n", tabella[i][0], tabella[i][0]);
        //acquisisci(testo, N);
    
    
        return 0;
    }
    
    void acquisisci(char * vettore[][N],int dim){
        int i;
      for (i=0; i<3; i++){
        gets(&vettore[i][0]);
        printf("ok");
      }
    
    }

  4. #4
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    io ho provato a risolvere il problema dalla descrizione ("i commenti")
    non dice di dover usare matrici tridimensionali e puntatori
    quindi visto che un array è passato per riferimento indirizzo lo risolto con semplici
    array e una matrice lo fatto perche al momento non avevo un cazz... da fare

    premetto che nessuno deve niente a nessuno ma un rigraziamento se il codice
    fosse di aiuto è sicuramente gradito poi difficilmente troverai altre persone
    che ti postano il codice completo per un problema di qualunque difficolta fosse



    codice:
    
    
    //Si scriva un programma che acquisisca 3 stringhe, ciascuna contenente il
    //nome di un prodotto e il relativo prezzo separati da spazio. Una volta
    //memorizzate queste informazioni in opportune variabili, il programma
    //riceve un’ulteriore stringa contente un nome di prodotto e un valore intero
    //corrispondente ad una quantità.
    //Il programma deve:
    //a. Stabilire se il prodotto inserito per ultimo corrisponde ad uno dei
    //prodotti memorizzati in precedenza
    //b. In caso negativo, richiedere un altro inserimento di nome prodotto e
    //quantità
    //c. In caso positivo, calcolare e visualizzare il costo totale moltiplicando
    //quantità e prezzo del prodotto in questione
    
    // realizzo questo programma senza usare le strutture
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define N 70 //dimensione riga nome_prodotto + prezzo
    
    void acquisisci(char  testo[],char nome_prodotto[][N],float prezzo[]);
    void visualizza_costo(char nome_cercato[],float prezzo[],int quantita,int dim);
    int main()
    {   
        int i;
        char testo[N];
        char nome_prodotto[3][N];
        float prezzo[3];
        char nome_cercato[70];
        int quantita,dim;
        int ciclo=1;
        acquisisci(  testo, nome_prodotto,prezzo);
        
           //riceve un’ulteriore stringa contente un nome di prodotto e un valore intero
           //corrispondente ad una quantità.
           //a. Stabilire se il prodotto inserito per ultimo corrisponde ad uno dei
           //prodotti memorizzati in precedenza
           //b. In caso negativo, richiedere un altro inserimento di nome prodotto e
           //quantità
       do
       {    
            printf("-----------------------------------------------------------\n");
            printf(" inserisci  nome prodotto e quantita' separati da uno spazio\n");
            fgets(testo,N,stdin);
            sscanf(testo, "%s %d",nome_cercato, &quantita );
                 for( i= 0 ; i<3; i++)   //a. Stabilire se il prodotto inserito per ultimo corrisponde ad uno dei
                                         //prodotti memorizzati in precedenza
                 {
                         if(strcmp(nome_cercato,nome_prodotto[i])==0)
                             {
                                  ciclo=0;
                                  dim=i;
                                            }    
                     }
        } while( ciclo==1);  
    
    
        //c. In caso positivo, calcolare e visualizzare il costo totale moltiplicando
        //quantità e prezzo del prodotto in questione
       
        visualizza_costo( nome_cercato, prezzo, quantita, dim);
    
        system("pause");
        return 0;
    }
    
    
    
    void acquisisci(char  testo[],char nome_prodotto[][N],float prezzo[])
    {
        
        int i;
        printf("-----------------------------------------------------------\n");
        printf("-----------------------------------------------------------\n");
        printf("\n\n");
        printf("Inserisci tre stringhe contenenti : nome prodotto e prezzo, separati da spazio\n");
        printf("\n\n");  
        printf("-----------------------------------------------------------\n");
        printf("-----------------------------------------------------------\n");
       
        for(i=0;i<3;i++){
          
          fgets(testo, N, stdin);
             
          sscanf(testo, "%s %f",nome_prodotto[i], &prezzo[i] );
    
    
          } 
        
        
        
        }
        
        
        
     void visualizza_costo(char nome_cercato[],float prezzo[],int quantita,int dim)
     {
         
         //c. In caso positivo, calcolare e visualizzare il costo totale moltiplicando
        //quantità e prezzo del prodotto in questione
         
         
         printf("-----------------------------------------------------------\n");
         printf("-----------------------------------------------------------\n");
         printf("Costo totale prodotto %s   =  %.2f\n",nome_cercato,prezzo[dim]*quantita);
         
         
         }
    Tecnologia

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.