Nieprawidłowa deklaracja

0

Witam.

Mam taki problem:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

struct kosmos
{
int numer; // numer w bazie
string nazwa;
string masa;
string ID; 
};

(...)



case 3:
			{
				    cout<<"Pozycje w encyklopedii: \n\n";
					
				    int n = rozmiar(argv[1])-1;
				    kosmos *s=new kosmos [n];
				    zpliku(argv[1],s,n);
				    wypisz(s,n);
				    
				    delete [] s;
				    break;
			}

W linijce:
zpliku(argv[1],s,n);

wyrzuca mi błąd, którego jeszcze nie jestem w stanie/nie umiem rozwiązać.
[Error] 'zpliku' was not declared in this scope

Czy mógłbym liczyć na pomoc?

0

Error] 'zpliku' was not declared in this scope

zmienna z pliku nie istnieje w tamtym miejscu. Pokaz caly kod. Tam gdzie deklarujesz zpliku i ten case

0

Czyli chyba o czymś gdzieś zapomniałem.

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

struct kosmos
{
int numer; // numer w bazie
string nazwa;
string masa;
string ID; 
};

void dodaj(char *in,kosmos *s,int n)
{
	ofstream plik;
	plik.open(in);
	
	for(int i=0;i<n;++i)
	{
	s[i].numer=i+1;
	plik<<s[i].numer<<endl;
	cout<<"Podaj nazwe obiektu: \n";
	cin>>s[i].nazwa;
	plik<<s[i].nazwa<<endl;
	cout<<"Podaj mase obiektu: \n";
	cin>>s[i].masa;
	plik<<s[i].masa<<endl;
	plik<<"\n\n\n";
	}
	plik.close();
}


int rozmiar(char *in)
{
	string nazwa, masa;
	int ID;
	
	ifstream plik;
	plik.open(in);
	int rozmiar=0;
	
	while(!plik.eof())
	{
		plik>>ID;
		plik>>nazwa;
		plik>>masa;
		
		rozmiar += 1;
	}
	
	plik.close();
	return rozmiar;
	
}

TU JESZCZE VOIDY OD SORTOWANIA, ALE CHYBA NIE MAJĄ NIC DO RZECZY.


int main(int argc,char **argv)
{
	
	cout<<"ENCYKLOPEDIA KOSMOSU!"<<endl;
	
	int znak;
	argv[1] = "kosmos.txt";
	
	do
	{
		cout<<"1: Stworz encyklopedie (plik) \n";
		i inne couty
		
		cin>>znak;
		
		switch(znak)
		{
			case 1:
			{
			    int n;
				cout<<"Ile pozycji chcesz wprowadzic na start? \n";
				cin>>n;
				kosmos *s = new kosmos [n];
				dodaj(argv[1],s,n);
				break;
			}
			
			case 2:
			{
				int ile;
				cout<<"Ile pozycji chcesz dopisac? \n";
				cin>>ile;
				
				int roz = rozmiar(argv[1])+ile-1;
				int rozm = rozmiar(argv[1])-1;
				
				kosmos *s = new kosmos [roz];
				zpliku(argv[1],s,rozm);
				
				for(int i=rozm;i<roz;++i)
			    {
			    	s[i].ID = i+1;
			    	cout<<"Podaj nazwe: \n";
			    	cin>>s[i].nazwa;
			    	cout<<"Podaj mase: \n";
			    	cin>>s[i].masa;
			    }
			    
			    ofstream plik;
			    plik.open(argv[1]);
			    for(int i=0;i<roz;++i)
			    {
			    	plik<<s[i].ID<<endl;
			    	plik<<s[i].nazwa<<endl;
			    	plik<<s[i].masa<<endl;
			    	plik<<"\n\n";
			    }
			    plik.close();
			    delete [] s;
			    break;
			}
			
			case 3:
			{
					cout<<"Pozycje w encyklopedii: \n\n";
					
				    int n = rozmiar(argv[1])-1;
				    kosmos *s=new kosmos [n];
				    zpliku(argv[1],s,n);
				    wypisz(s,n);
				    
				    delete [] s;
				    break;
			}
				




0

a gdzie masz funkcje zpliku ? przeciez tutaj jej nie ma

0

Ehh... przerasta mnie to programowanie.
Mógłbyś mi pomóc z tą funkcją?

Zapewne będzie to coś w ten deseń?

 void zpliku(char *n,kosmos *s,int n)
{
    ifstream plik;
    plik.open(in);                         // pytanie czy to jest dobrze zadeklarowane? Wyrzuca błąd przy return false; - return-statement with a value, in function returning 'void' [-fpermissive]

    if( !plik.good() )
         return false;
   
    string wiersz;                        //zastanawiam się czy to jest potrzebne, bo z tego raczej nie będę korzystał. Chyba, że niezbędne do działania.
    while( std::getline( plik, wiersz ) )
         cout << wiersz << std::endl;
   
    plik.close();
    return true;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1