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);
}