przyznanie pamieci na sztywno do programu

0

Witam!
mam taki program który ładuje dane z bazy do tablicy. w bazie jest chyba z 50 pozycji a mi ładuje się tylko do 7 pozycji... wydaje mi się ze to problem z przyznaną pamięcią dla tablicy. ale nie wiem jak ustawić na sztywno przyznaną pamięć. poza tym muszę dopisać parę linijek kodu w których po wpisaniu czegoś co nie jest w bazie wypisze się linijka na ekran ze nie ma takiego w bazie. próbowałem zrobić to sam ale nie wiem w czym tkwi problem ale mi się nie kompiluje. proszę więc o pomoc
Link do bazy//www19.zippyshare.com/v/45964331/file.html
Kompilator devc++

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct szereg
{   
        int numer; /// numer w bazie
        string nuklid;
        string czas;
        string szereg;
        string produkt;
}; 
int rozmiar(char *in) 
{
        string nuklid , produkt;
        int numer;
        string czas, szereg;
        ifstream plik;
        plik.open("szereg.txt");
        int rozm = 0; 
            while(plik>>numer) 
            {
             plik>>nuklid; 
             plik>>czas;
             plik>>szereg;
             plik>>produkt;
             rozm ++;
             }
        plik.close();
        return rozm;
}
void wypisz(szereg *s,int n) 
{
    for(int i=0;i<n;++i)
    { 
        cout<<"Nr."                <<s[i].numer<<endl;
        cout<<"Nuklid :"          <<s[i].nuklid<<endl;
        cout<<"Czas :"            <<s[i].czas<<endl;
        cout<<"Szereg :"         <<s[i].szereg<<endl;
        cout<<"Produkt :"         <<s[i].produkt<<endl;
        cout<<"-  -  -  -  -  -  -  -  -  -  -  -  -\n";
    }
}

void zpliku(char *in,szereg *s,int n)
{ 
        ifstream plik; 
        plik.open("szereg.txt");

        for(int i=0;i<n;++i)
        {
                plik>>s[i].numer; 
                plik>>s[i].nuklid;
                plik>>s[i].czas;
                plik>>s[i].szereg;
                plik>>s[i].produkt;
        }
}
        void szukaj(szereg *s,int n,string szukany_nuklid)
{

	int licznik = 0;
	
	for(int i=0;i<n;++i)
	{
		if(s[i].nuklid == szukany_nuklid)
		{
        cout<<"Nr."              <<s[i].numer<<endl;
        cout<<"Nuklid :"          <<s[i].nuklid<<endl;
        cout<<"Czas :"            <<s[i].czas<<endl;
        cout<<"Szereg : "         <<s[i].szereg<<endl;
        cout<<"Produkt :          "<<s[i].produkt<<endl;
        cout<<"-  -  -  -  -  -  -  -  -  -  -  -  -\n";
			
			licznik = licznik + 1;  //zmienna licznik sprawdza czy w bazie byl nuklid
		}
	}
}
int main() 
{        
   int znak; 
   char* argv = "szereg.txt";  
        do 
        {
                cout<<" wyswietl wszystkie wcisnij - 1\n";
                cout<<" sukaj nuklid       wcisnij - 2\n";
                cout<<" Wyjscie z programu wcisnij - 0\n";
 
                cout<<"Co chcesz robic ??\n";
 
                cin>>znak;
 
                switch(znak)
                {
                        case 1:
                        {
                                cout<<"Nuklidy w bazie :\n";
                                
                                int n = rozmiar(argv);
                                szereg *s = new szereg [n];
                                zpliku(argv,s,n);
                                wypisz(s,n);
 
                                delete [] s;
                                break;
                        }
                       	case 2:
	                        	{
			                           ifstream plik;
                                       plik.open(argv);
			                           string szukany_nuklid;
			                           cout<<"Podaj symbol nuklidu jaki chcesz znalezc \n";
			                           cin>>szukany_nuklid;
		
			                           int n = rozmiar(argv);
			                           szereg *s = new szereg [n];
			                           zpliku(argv,s,n);
			
			                           szukaj(s,n,szukany_nuklid);
			
			
			                           delete [] s;
			                           break;
			                           plik.close();
		                            }
                        case 0: 
                       {        
                                cout<<"Dziekuje! Dowidzenia;)\n";
                        }
                }
        }
        while(znak != 0);
        return 0;
}
 
1

A jak u ciebie wygląda plik? Założę się że w pliku 7-my rekord ma więcej niż jedno słowo w nazwie produktu, a przy wczytaniu plik>>produkt; wczytuje się tylko pierwsze słowo, zaś drugie słowo wczytuje się instrukcją plik>>numer a skoro to słowo nie jest numerem to mamy błąd.

0

http://www19.zippyshare.com/v/45964331/file.html

Tu masz link do pliku/bazy w txt oczywiscie

1
U238
4.51*10^9lat
uranowo-radowy
Th324

2
Th234
24.10d
uranowo-radowy
Pa234

3
Pa234
1,18min
uranowo-radowy
U234

4
U234
2,44*10^5lat
uranowo-radowy
Th230

5
Th230
7,50*10^4lat
uranowo-radowy
Ra226

5
Ra226
1599lat
uranowo-radowy
Rn222

6
Rn222
3,823d
uranowo-radowy
Po218

7
Po218
3,05 min
uranowo-radowy
Pb214

8
Pb214
26,8 min
uranowo-radowy
Bi214

9
Bi214
19,7lat
uranowo-radowy
Po214,Tl210

10
Po214
0,162ms
uranowo-radowy
Pb210

11
Tl210
1,32min
uranowo-radowy
Pb210

12
Pb210
22,3lat
uranowo-radowy
Bi210

13
Bi210
5,0d
uranowo-radowy
Po210,Tl206

14
Po210
138,375d
uranowo-radowy
Pb206

15
Pb206
trwaly
uranowo-radowy

16
U235
6,96*10^8lat
uranowo-aktynowy
Th231

17
Th231
25,64 h
uranowo-aktynowy
Pa231

18
Pa231
32760 lat
uranowo-aktynowy
Ac227

19
Ac227
21,772 lata
uranowo-aktynowy
Th227,Fr223

20
Th227
18,72 d
uranowo-aktynowy
Ra223

21
Fr223
21,8 min
uranowo-aktynowy
Ra223

22
Ra223
11,434 d
uranowo-aktynowy
Rn219

23
Rn219
3,920 s
uranowo-aktynowy
Po215

24
Po215
1,78 ms
uranowo-aktynowy
Pb211,At215

25
Pb211
36,1 min
uranowo-aktynowy
Bi211

26
Bi211
2,15 min
uranowo-aktynowy
Tl207,Po211

27
Po211
510 ms
uranowo-aktynowy
Pb207

28
Tl207
4,79 min
uranowo-aktynowy
Pb207

29
Pb207
trwaly
uranowo-aktynowy

30
Th232
1,405*10^5
Szereg torowy
Ra228

31
Ra228
5,75 lat
Szereg torowy
Ac228

32
Ac228
6,13 h
Szereg torowy
Th228

33
Th228
1,913 lat
Szereg torowy
Ra224

34
Ra224
3,64 d
Szereg torowy
Rn220

35
Rn220
54,5 s
Szereg torowy
Po216

36
Po216
0,158 s
Szereg torowy
Pb216

37
Pb212
10,64 h
Szereg torowy
Bi212

38
Bi212
60,55 min
Szereg torowy
Po212,Tl208

39
Po212
3*10^-7 s
Szereg torowy
Pb208

40
Tl208
3,0 min
Szereg torowy
Pb208

41
Pb208
trwaly
Szereg torowy

42
Np237
2,14*10^6 lat
Szereg neptunowy
Pa233

43
Pa233
27,0 d
Szereg neptunowy
U233

44
U233
1,59*10^5 lat
Szereg neptunowy
Th229

45
Th229
7340 lat
Szereg neptunowy
Ra225

46
Ra225
14,8 d
Szereg neptunowy
Ac225

47
Ac225
10 d
Szereg neptunowy
Fr221

48
Fr221
4,8 min
Szereg neptunowy
At217

49
At217
32,3 min
Szereg neptunowy
Bi213

50
Bi213
46 min
Po213,Ti209
Szereg neptunowy

51
Po213
4,2*10^-6 s
Szereg neptunowy
Pb209

52
Tl209
2,2 min
Szereg neptunowy
Pb209

53
Pb209
3,25 h
Szereg neptunowy
Bi209

54
Bi209
quasi trwaly
Szereg neptunowy

0

racja trzeba usunąć wszystkie spacja i śmiga.

0

mam jeszcze taki program.. nie jest moj ale nie chodzi moglibyscie mi powiedziec czemu?

#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int j,c;
string i,f; 

char o,r;
double e2,e1, SEM;
int main()
{ 
    cout <<"****************************************************************\n";
    cout <<"** Program do wyznaczania siły elektromotorycznej             ** \n";
    cout <<"** Autor programu: Wojciech Bromboszcz                         ** \n";
    cout <<"****************************************************************\n";
    cout <<"\n";
    c=0;
    while (c<1){
    cout<< " podaj pierwsze pologniwo";
    cin>> i;
   
    if ( i=="Al"){o='A';++c;}
    else if (i=="K"){o='K';++c;}
    else if (i=="Ca"){o='C';++c;}
    else if ( i=="Na"){o='N';++c;}
    else if ( i=="Mg") {o='M';++c;}
    else if (i=="Li") {o='L';++c;}
    else if ( i=="Zn") {o='Z';++c;}
       
    else if (i=="Cr") {o='R';++c;}
    else if (i=="Fe") {o='F';++c;}
    else if (i=="Cd") {o='D';++c;}
    
    
 
   else if (i=="Co") {o='W';++c;}
   else if (i=="Ni") {o='Y';++c;}
   
   else if (i=="Sn") {o='S';++c;}
   else if (i=="Pb") {o='P';++c;}
   else if (i=="H") {o='H';++c;}
   else if (i=="Cu") {o='T';++c;}
   
   else if (i=="Bi") {o='O';++c;}
   else if (i=="Hg") {o='Q';++c;}
   else if (i=="Au") {o='U';++c;}
  else{ cout<< "wprowadzono bledny symbol";}
}
switch (o)
{
       case'A':{e1=-3,05; }break;
       case'K':{e1=-2,93; }break;
       case'C':{e1=-2,84; }break;
      
       case'N':{e1=-2,71; }break;
        case'M':{e1=-2,38; }break;
         case'L':{e1=-3,04; }break;
          case'Z':{e1=-0,76; }break;
           case'R':{e1=-0,91; }break;
            case'F':{e1=-0,44; }break;
             case'D':{e1=-0,40; }break;
             
               case'W':{e1=-3,05; }break;
                case'Y':{e1=-0,23; }break;
                 case'S':{e1=-0,14; }break;
                  case'P':{e1=-0,13; }break;
                   case'H':{e1=0; }break;
                    case'O':{e1=0,32; }break;
                     case'Q':{e1=0,85; }break;
                      case'U':{e1=1,52; }break;
                       case'T':{e1=0,34; }break;

}
{
 cout<< " podaj drugie  pologniwo";
    cin>> f;
    if ( f=="Al"){r='A';++c;}
    else if (f=="K"){r='K';++c;}
    else if (f=="Ca"){r='C';++c;}
    else if ( f=="Na"){r='N';++c;}
    else if ( f=="Mg") {r='M';++c;}
    else if (f=="Li") {r='L';++c;}
    else if ( f=="Zn") {r='Z';++c;}
       
    else if (f=="Cr") {r='R';++c;}
    else if (f=="Fe") {r='F';++c;}
    else if (f=="Cd") {r='D';++c;}
    
    
 
   else if (f=="Co") {r='W';++c;}
   else if (f=="Ni") {r='Y';++c;}
   
   else if (f=="Sn") {r='S';++c;}
   else if (f=="Pb") {r='P';++c;}
   else if (f=="H") {r='H';++c;}
   else if (f=="Cu") {r='T';++c;}
   
   else if (f=="Bi") {r='O';++c;}
   else if (f=="Hg") {r='Q';++c;}
   else if (f=="Au") {r='U';++c;}
  else{ cout<< "wprowadzono bledny symbol";}
}
switch (r)
{
       case'A':{e2=-3,05; }break;
       case'K':{e2=-2,93; }break;
       case'C':{e2=-2,84; }break;
      
       case'N':{e2=-2,71; }break;
        case'M':{e2=-2,38; }break;
         case'L':{e2=-3,04; }break;
          case'Z':{e2=-0,76; }break;
           case'R':{e2=-0,91; }break;
            case'F':{e2=-0,44; }break;
             case'D':{e2=-0,40; }break;
             
               case'W':{e2=-3,05; }break;
                case'Y':{e2=-0,23; }break;
                 case'S':{e2=-0,14; }break;
                  case'P':{e2=-0,13; }break;
                   case'H':{e2=0; }break;
                    case'O':{e2=0,32; }break;
                     case'Q':{e2=0,85; }break;
                      case'U':{e2=1,52; }break;
                       case'T':{e2=0,34; }break;
 
 
}

   if (e1>e2) cout<< "większy potenciał ma "<<i ; 
   else if (e2>e1) cout<<"większy potenciał ma"<< f;
  if (e1>e2) SEM=e1-e2 ;
  else if (e2>e1) SEM=e2-e1 ;
  
    
    
    
getch();
return (0);
}


 
0

Separatorem dziesiętnym jest kropka. Przecinek to w tym durnym języku taki idiotyczny operator, który zwraca to, co jest na prawo od niego.

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