Oppure

Loading
02/12/09 20:59
matteog
Io ho la seguente pseudocodifica e devo scrivere il programma in c sapeta aiutarmi?

inizio
fp<-apri("listino.dat",scrittura);
registra
chiudi(fp)
fp<-apri("listino.dat",lettura);
stampa
chiudi(fp)
fine


funz registra


inizio
esegui
chiedi(descrizione)
leggi(articolo.descrizione)
chiedi(prezzo)
leggi(articolo.prezzo)
scrivi(articolo,fp)
chiedi(elenco finito?)
leggi(risposta)
ripeti mentre(risposta=="no";)
fine


finz stampa

inizio
leggi(articolo,fp)
mentre(fine file(fp)==false) esegui
scrivi(stampante,articolo.descrizione,articolo.prezzo)
leggi(articolo,fp)
ripeti
fine




il programma sotto è ciò che sn riusciyto a fare ma nn funziona questi sn gli errori potete aiutarmi?

documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(19) : error C3861: 'registra': identificatore non trovato
1>c:\documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(20) : error C2665: 'fclose': nessuno dei 2 overload potrebbe convertire tutti i tipi di argomenti
1> c:\programmi\microsoft visual studio 9.0\vc\include\stdio.h(202): potrebbe essere 'int fclose(FILE *)'
1> c:\programmi\microsoft visual studio 9.0\vc\include\stdio.h(202): o 'int fclose(FILE *)'
1> durante la ricerca di corrispondenza con l'elenco di argomenti '(const char [12])'
1>c:\documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(22) : error C3861: 'stampa': identificatore non trovato
1>c:\documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(23) : error C2665: 'fclose': nessuno dei 2 overload potrebbe convertire tutti i tipi di argomenti
1> c:\programmi\microsoft visual studio 9.0\vc\include\stdio.h(202): potrebbe essere 'int fclose(FILE *)'
1> c:\programmi\microsoft visual studio 9.0\vc\include\stdio.h(202): o 'int fclose(FILE *)'
1> durante la ricerca di corrispondenza con l'elenco di argomenti '(const char [12])'
1>c:\documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(34) : error C2664: 'gets': impossibile convertire il parametro 1 da 'std::string' a 'char *'
1> Nessun operatore di conversione definito dall'utente è disponibile o è impossibile chiamare l'operatore
1>c:\documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(47) : error C2664: 'feof': impossibile convertire il parametro 1 da 'const char [12]' a 'FILE *'
1> I tipi a cui si punta sono privi di relazioni. La conversione richiede reinterpret_cast, cast di tipo C o cast di tipo funzione
1>c:\documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(47) : fatal error C1903: impossibile recuperare l'errore o gli errori precedenti. Interruzione della compilazione
1>Il log di compilazione è stato salvato in ' and Settings\Utente\Documenti\Visual Studio 2008\Projects\Project1\file new\file new\Debug\BuildLog.htm'
1>file new - 7 errore/i, 1 avviso/i
========== Compilazione: 0 completate, 1 non riuscite,


#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
struct merce
{
	string descrizione;
	int prezzo;
};
merce elenco_di_articoli;
merce articolo;
FILE *fp,*fopen(),*fclose();
void main()
{
	fp=fopen("listino.txt","w");
	registra();
	fp=fclose("listino.txt");
	fp=fopen("listino.txt","r");
	stampa();
	fclose("listino.txt");
system("pause");
}


void registra()
{
	int risp;
	do
	{
		cout<<"inserisci descrizione:"<<endl;
	    gets(articolo.descrizione);
		cout<<"inserisci prezzo :"<<endl;
		cin>>(articolo.prezzo);
		cout<<"elenco finito?[0,1]"<<endl;
		cin>>risp;
   }
   while(risp!=0);

	//fwrite(articolo,fp);
}
void stampa()
{
	//fread(
	while(feof("listino.txt")==false)
	{
		fwrite(stampante,articolo.descrizione,articolo.prezzo);
		fread();
	}
}











aaa
02/12/09 21:29
lorenzo
tanto per cominciare, fopen e fclose sono due funzioni, quindi mi spieghi perché le hai messe tra le variabili?
Oltretutto una variabile scritta con due tonde alla fine non esiste da nessuna parte quindi è evidente che non hai capito niente su come si dichiara una variabile.

poi se la funzione registra la scrivi dopo il main ne devi mettere il prototipo PRIMA del main

metterai quindi prima del main

void registra();

e tutto il resto...
aaa
05/01/10 0:02
Zonzo
Diciamo ch il codice era quasi tutto sbagliato.
Adesso ti appiccico il codice sorgente modificato con qualche commento che ti indica grosso modo gli errori, e dato che ormai è tardi in un altro momento ti scrivo in maniera più dettagliata gli errori che hai commesso.
#include <stdio.h> 
#include <string.h> 
#include <iostream> 

using namespace std; 

struct merce 
{ 
    char descrizione[40]; // In C una stringa non è altro che un array di caratteri 
    int  prezzo;            // e va dichiarato come char dato che string non esiste
}; 

merce articolo; 
 
void registra(FILE *pointer);      //Se vuoi sviluppare le tue funzioni dopo il main 
void stampa(FILE *pointer);        //prima devi almeno dichiarare il loro prototipo
 
int main() 
{ 
    FILE *fp;             //fopen() e fclose() sono funzioni e non puntatori
    fp=fopen("listino.txt","w"); 
    registra(fp); 
    fclose(fp);           //int fclose(FILE *stream) -> il paramatero da passare è il puntatore fp
    fp=fopen("listino.txt","r"); 
    stampa(fp); 
    fclose(fp);          //int fclose(FILE *stream) -> il paramatero da passare è il puntatore fp
    system("pause");
    return 0;
} 


void registra(FILE *pointer)
{ 
    int risp; 
    do 
    {   
        system("cls");
        cout<<"Inserisci descrizione: "; 
        scanf("%s",articolo.descrizione);  //Meglio non usare gets() ma scanf()
        cout<<"Inserisci prezzo: "; 
        cin>>(articolo.prezzo); 
        fwrite(&articolo,sizeof(merce),1,pointer);
        cout<<"Elenco finito?\n(0)NO\n(1)SI\nScelta: "; 
        cin>>risp; 
   } 
   while(risp==0);    //Tutti i cicli in C girano solo se la condizione è Vera
   
} 
void stampa(FILE *pointer)
{   
    system("cls"); 
    cout<<"ARTICOLI & PREZZI"<<endl; 
    while(!feof(pointer)) 
    {   
        fread(&articolo,sizeof(merce),1,pointer);
        cout<<articolo.descrizione<<" = "<<articolo.prezzo<<endl;        
    } 
} 

aaa
05/01/10 16:40
matteog
ok grazie mille
aaa