HI, can somebody help with this? This is my source code but i was trying to overwrite it, from C to C++. but no way, I'm not good at this.

Language doesn't matter. it's slovak. I just need help with syntax.
Thanks.

#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>

#define POC 50
typedef struct zoznam {     // deklarovanie, ze ide o zretazeny zoznam + deklarovanie jednotlivych pointerov a funkcii.
 char *meno;        
 char *priezvisko;
 char *rodcislo;
 int pocetakcii;
 struct zoznam *p_dalsi;
} ZOZNAM;
static ZOZNAM *p, *p_prvy, *p_akt, *p_pom; 
ZOZNAM *alokTest();
char *alokString();
FILE *nacitajSubor();
int zapisSubor(FILE *fr);
int vytvorPrazdny();
int zrusZoznam();
int zisti();
int pridaj();
int vymaz();
int zorad();
int vypis();

#include <string.h>
#define N 50
ZOZNAM *alokTest()           //funkcia alokujuca pamat velkosti struktury ZOZNAMu
{
 ZOZNAM *p_pom;
 p_pom = (ZOZNAM *) malloc(sizeof(ZOZNAM));
 if (p_pom == NULL) {
  printf("Malo pamate.");
  exit(1);
 }
 return p_pom;
}
char *alokString()           //funkcia alokujuca pamat pre retazce v strukture ZOZNAMu
{
 char *string;
 string = (char *) malloc(sizeof(char)*50);
 if (string == NULL) {
  printf("Malo pamate.");
  exit(1);
 }
 return string;
}
int check()
{
 if (p_prvy == NULL) {
  printf("Zoznam nebol vytvoreny, musite vybrat moznost a/g.\n");
  printf("\nPokracujte stlacenim klavesy ENTER.\n");
  getchar();
  return 0;
 }
 return 1;
}
int vytvorPrazdny()    /*Funkcia pre vytvorenie noveho akcionara.
        Najprv vseobecna alokacia pre jednotlive 
        premenne. Potom alokacia pre rozne premene
        na jednom mieste v poli.*/
{
 p = alokTest();
 p_prvy = alokTest();
 p_akt = alokTest();
 p_pom = alokTest();
 
 p_prvy->meno = alokString();
 p_prvy->meno[0] = '\0';
 p_prvy->priezvisko = alokString(); 
 p_prvy->priezvisko[0] = '\0';
 p_prvy->rodcislo = alokString(); 
 p_prvy->rodcislo[0] = '\0';
 p_prvy->pocetakcii = 0;
 p_prvy->p_dalsi = NULL;
 p_akt = p_prvy;
 return 1;
}
FILE *nacitajSubor()        /* Funkcia pre nacitanie zoznamu zo suboru.
             najprv sa nacita prvy prvok v zozname a potom
             ostatne prvky*/
{
 FILE *fr;
 char *pomocny;
 pomocny = alokString();
 vytvorPrazdny();
 if ((fr = fopen("akcie.txt", "r")) == NULL) { 
  
  printf ("Subor sa nepodarilo otvorit.");
  return NULL;
 }
 
 if ((fscanf(fr, "%s", p_prvy->meno)) != EOF) {
  fscanf(fr, "%s", p_prvy->priezvisko);
  fscanf(fr, "%s", p_prvy->rodcislo);
  fscanf(fr, "%d", &p_prvy->pocetakcii);
 }
 
 while ((fscanf(fr, "%s", pomocny)) != EOF) {
  p_akt->p_dalsi = alokTest();
  p_akt->p_dalsi->meno = alokString();
  p_akt->p_dalsi->priezvisko = alokString(); 
  p_akt->p_dalsi->rodcislo = alokString(); 
  p_akt->p_dalsi->p_dalsi = NULL;
  p_akt = p_akt->p_dalsi;
  
  strcpy (p_akt->meno, pomocny);
  fscanf(fr, "%s", p_akt->priezvisko);
  fscanf(fr, "%s", p_akt->rodcislo);
  fscanf(fr, "%d", &p_akt->pocetakcii);
 }
 if (fclose(fr) == EOF) {                                 
   printf ("Subor sa nepodarilo uzavriet.");
   return NULL;
 }
 zorad();
 printf ("Zoznam bol uspesne vytvoreny\n");
 printf ("\nPokracujte stlacenim klavesy ENTER\n");
 getchar();
 return fr;
}
int zapisSubor(FILE *fr)    /*Zapis udajov z  pamate do suboru.*/
{
 FILE *fw;
 
 if (check() == 0)     /*Tato funkcia kontroluje ci je zoznam vytvoreny
          aby sa nam neprepisali uz vytvorene hodnoty*/
  return 0;
 if (fr == NULL) {
  printf ("Subor nebol nacitany\n");
  return 0;
 }
 p_akt = p_prvy;
 
 if ((fw = fopen("akcie.txt", "w")) == NULL) {
  
  printf ("Subor sa nepodarilo otvorit.");
  return 0;
 }
 while (p_akt->p_dalsi != NULL) {
  fprintf (fw, "%s %s %s %d\n", p_akt->meno, p_akt->priezvisko, p_akt->rodcislo, p_akt->pocetakcii);
  p_akt = p_akt->p_dalsi;
 }
 fprintf (fw, "%s %s %s %d\n", p_akt->meno, p_akt->priezvisko, p_akt->rodcislo, p_akt->pocetakcii);
 if (fclose(fw) == EOF) {                       
   printf ("Subor sa nepodarilo uzavriet.");
   return 0;
 }
 printf ("Zoznam bol uspesne ulozeny do suboru\n");
 printf ("\nPokracujte stlacenim klavesy ENTER\n");
 getchar();
 return 1;
}
int zrusZoznam()   /*funkcia na zrusenie zoznamu.*/
{
 if (check() == 0)
  return 0;
 p_akt = p_prvy;
 
 while (p_prvy->p_dalsi != NULL) {  /*Cyklus funguje tak ze, prvy prvok zmaze a na
           jeho mieste sa presunie prvok ktory bol pred nim
           takto sa to opakuje az kym nezostane prvy prvok jediny*/

  p_pom = p_prvy->p_dalsi;
  free((void *) p_prvy);
  p_prvy = p_pom;
 }
 free((void *) p_prvy);     /*tymto sa zmaze posledny prvok.*/
 p_prvy = NULL;
 
 printf ("Zoznam bol uspesne zruseny\n");
 printf ("\nPokracujte stlacenim klavesy ENTER\n");
 getchar();
 return 1;
}
int pridaj()   /*funkcia na pridanie noveho akcionara*/    
{
 
 if (check() == 0)
  return 0;
 if (p_prvy->meno[0] == '\0') {   /*pridanie pre prveho akcionara*/
  printf("Meno: ");            
  scanf("%s", p_prvy->meno);
  printf("Priezvisko: ");
  scanf("%s", p_prvy->priezvisko);
  printf("Rodne Cislo: ");
  scanf("%s", p_prvy->rodcislo);
  printf("Pocet akcii: ");
  scanf("%d", &p_prvy->pocetakcii);
  getchar();
  zorad();
  printf("Novy akcionar bol uspesne priradeny do zoznamu.\n");
  printf("\nPokracujte stlacenim klavesy ENTER\n");
  getchar();
  return 1;  
    
 }
 p_akt = p_prvy;
  
 while (p_akt->p_dalsi != NULL)   /*cyklus na pridanie ostatnych co nasleduju po prvom*/
  p_akt = p_akt->p_dalsi;
   
 p_akt->p_dalsi = alokTest();
 p_akt->p_dalsi->meno = alokString();
 p_akt->p_dalsi->priezvisko = alokString();
 p_akt->p_dalsi->rodcislo = alokString();
 p_akt->p_dalsi->p_dalsi = NULL;
 
 printf("Meno: ");            
 scanf("%s", p_akt->p_dalsi->meno);
 printf("Priezvisko: ");
 scanf("%s", p_akt->p_dalsi->priezvisko);
 printf("Rodne Cislo: ");
 scanf("%s", p_akt->p_dalsi->rodcislo);
 printf("Pocet akcii: ");
 scanf("%d", &p_akt->p_dalsi->pocetakcii);
 getchar();
 
 zorad();
 printf("Novy akcionar bol uspesne priradeny do zoznamu.\n");
 printf("\nPokracujte stlacenim klavesy ENTER\n");
 getchar();
 return 1;
}
int zisti()    /*funkcia pre zistenie ci je osoba akcionarom firmy alebo nie*/
{
 char *meno_a;
 char *priezvisko_a;
 
 if (check() == 0)
  return 0;
 meno_a = alokString();
 priezvisko_a = alokString();
 printf ("Zadaj meno osoby:");
 scanf ("%s", meno_a);
 printf ("Zadaj priezvisko osoby:");
 scanf ("%s", priezvisko_a);
 getchar();
 p_akt = p_prvy;
 while (p_akt->p_dalsi != NULL) {   /*cyklus je rozdeleny do dvoch podmienok
            ked je ziadana osoba prvy prvok v zozname
            a druha pre druhe prvky. Zistovanie je spravene
            cez porovnavanie retazcov.*/
  if ((strcmp(p_akt->meno, meno_a) == 0) && (strcmp(p_akt->priezvisko, priezvisko_a) == 0)) {
   printf ("Tato osoba je akcionarom firmy a vlastni %d akcii\n", p_akt->pocetakcii);
   printf("Pokracujte stlacenim klavesy ENTER\n");
   getchar();
   return 1;
  }
  p_akt = p_akt->p_dalsi;
 } 
 
 if ((strcmp(p_akt->meno, meno_a) == 0) && (strcmp(p_akt->priezvisko, priezvisko_a) == 0)) {
   printf ("Tato osoba je akcionarom firmy a vlastni %d akcii\n", p_akt->pocetakcii);
   printf("Pokracujte stlacenim klavesy ENTER\n");
   getchar();
   return 1;
 }
 printf ("Tato osoba nie je akcionarom firmy\n");
 printf("Pokracujte stlacenim klavesy ENTER\n");
 getchar();
 return 1;
}
int vymaz()   /*funkcia na zmazanie akcionara pre prvy prvok a pre ostatne.*/
{
 char *meno_a;
 char *priezvisko_a;
 
 if (check() == 0)
  return 0;
 p_akt = p_prvy;
 meno_a = alokString();
 priezvisko_a = alokString();
 printf ("Zadaj meno osoby\n");
 scanf ("%s", meno_a);
 printf ("Zadaj priezvisko osoby\n");
 scanf ("%s", priezvisko_a);
 getchar();
 if ((strcmp(p_prvy->meno, meno_a) == 0) && (strcmp(p_prvy->priezvisko, priezvisko_a) == 0)) {
  p_pom = p_prvy->p_dalsi;
  free((void *) p_prvy);
  p_prvy = p_pom;
  printf("Akcionar uspesne vymazany\n");   
  printf("\nPokracujte stlacenim klavesy ENTER\n");
  getchar();
  return 1;
 }
 while (p_akt->p_dalsi != NULL) {
  if ((strcmp(p_akt->p_dalsi->meno, meno_a) == 0) && (strcmp(p_akt->p_dalsi->priezvisko, priezvisko_a) == 0)) {
 
   p_pom = p_akt->p_dalsi->p_dalsi;
   free((void *) p_akt->p_dalsi);
   p_akt->p_dalsi = p_pom;
   printf("Akcionar uspesne vymazany\n");   
   printf("\nPokracujte stlacenim klavesy ENTER\n");
   getchar();
   return 1;
  }
  p_akt = p_akt->p_dalsi;
 } 
 
 printf("Neznamy akcionar\n");   
 printf("\nPokracujte stlacenim klavesy ENTER\n");
 getchar();
 return 1;
}

int zorad()    /*zoradenie akcionarom podla abecedy*/
{
 int i = 0, j = 0, n = 0;
 
 ZOZNAM *p_pom2;
 p_pom2 = alokTest();
 
 p_akt = p_prvy;
 while (p_akt->p_dalsi != NULL) {
  p_akt = p_akt->p_dalsi;
  n++;
 }
 for (i = 0; i <= n-1; i++) {
  p_akt = p_prvy;
 
  if (strcmp(p_prvy->priezvisko,p_prvy->p_dalsi->priezvisko) > 0)  {
 
   p_pom = p_prvy->p_dalsi;
   p_prvy->p_dalsi = p_prvy->p_dalsi->p_dalsi;
   p_prvy = p_pom;
   p_prvy->p_dalsi = p_akt;
   
  }
  p_akt = p_prvy;
  for (j = i; j <= n-2; j++) {
  
    if (strcmp(p_akt->p_dalsi->priezvisko,p_akt->p_dalsi->p_dalsi->priezvisko) > 0)  {
    p_pom = p_akt->p_dalsi->p_dalsi;
    p_akt->p_dalsi->p_dalsi = p_akt->p_dalsi->p_dalsi->p_dalsi;
    p_pom2 = p_akt->p_dalsi;
    p_akt->p_dalsi = p_pom;
    p_pom->p_dalsi = p_pom2;
        
   }
   p_akt = p_akt->p_dalsi;
  
  }
 }
 
 return 1;
}

int vypis()   /*vypis zoznamu*/
{
 int count = 1;
 if (check() == 0)
  return 0;
 p_akt = p_prvy;
 printf ("%3s | %10s | %10s | %10s | %5s\n", "#", "Meno", "Priezvisko", "Rod. cislo", "Akcii"); 
 printf ("-----------------------------------------------------\n");
 printf ("%3d | %10s | %10s | %10s | %5d\n", count++, p_akt->meno, p_akt->priezvisko, p_akt->rodcislo, p_akt->pocetakcii); 
 while (p_akt->p_dalsi != NULL) {
  p_akt = p_akt->p_dalsi;
  printf ("%3d | %10s | %10s | %10s | %5d\n", count++, p_akt->meno, p_akt->priezvisko, p_akt->rodcislo, p_akt->pocetakcii); 
 
 }
 printf("\nPokracujte stlacenim klavesy ENTER\n");
 getchar();
 return 1;
}

void main()                         
{
 
 FILE *fr;
 char volba;
 
 while (volba != 'x') {        //cyklus pre vyberanie moznosti zo zoznamu.
  
  system("cls");            
  printf ("a) Vytvor prazdny zoznam\n");
  printf ("b) Vloz akcionara do zoznamu\n");
  printf ("c) Zisti, ci je osoba akcionarom\n");
  printf ("d) Zrus akcionara\n");
  printf ("e) Zrus zoznam\n");
  printf ("f) Zapis zoznam do textoveho suboru\n");
  printf ("g) Nacitaj zoznam z textoveho suboru\n");
  printf ("h) Vypisat zoznam\n");
  printf ("x) KONIEC\n");
  scanf("%c", &volba);            
  getchar();
  switch(volba) {
   case 'a': vytvorPrazdny();
    printf ("Zoznam uspesne vytvoreny\n");
    printf ("\nPokracujte stlacenim klavesy ENTER");
    getchar();
    break;
   case 'b': pridaj(); 
    break;
   case 'c': zisti();
    break;
   case 'd': vymaz();
    break;
   case 'e': zrusZoznam();
    break;
   case 'f': zapisSubor(fr);
    break;
   case 'g': fr = nacitajSubor();
    break;
   case 'h': vypis();
    break;
   case 'z': zorad();
    break;
  }
 }
 printf ("Pokracujte stlacenim klavesy ENTER\n\n");
}

Recommended Answers

All 4 Replies

>HI, can somebody help with this?
Sure. What do you need help with?

Like we're going to translate your source code for you just because we feel like it. :rolleyes:

  • It's in Slovak. I don't know of any other people here who can read Slovak.
  • You haven't shown any bit of effort. You just dumped this at us.
  • The code is ugly. Consider using CODE TAGS.

We'd be happy to help you with a few lines you're stuck with, but there's no reason why we should be a code translation service.

I didn't mind it so. I only wanted to know how to translet it. i know i should use iostream and cout and cin and so on but what next?

:lol: lets go

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.