[ Príspevkov: 128 ] 1, 2, 3, 4, 5
AutorSpráva
Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 09.09.07
Prihlásený: 15.02.11
Príspevky: 24
Témy: 2 | 2
Bydlisko: bratislava
NapísalOffline : 18.11.2007 12:11 | lekcia v C++

po tvojej oprave to neslo. nemozem dat 2 premenne do vsetkychh 3 poli cize terajsi kod vyzera:
Kód:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    int i,j,k,l,m,n;
    int pole1[4][4];
   int pole2[4][4];
   int pole3[4][4];
    for(i = 0;i<4;i++)
    {
        printf("\nZadajde 4 cisla prvej matice do %d.riadku\n",i+1);
        for(j = 0;j<4;j++)
        {
            printf("\nZadajde %d.cislo.",j+1);
            scanf("%d",&pole1[j][i]);
        }
    };
    printf("\n\nVytvorena matica: \n");
    for(i = 0;i<4;i++)
    {
        for(j = 0;j<4;j++)
        {
               printf("%d ",pole1[j][i]);
        };
        printf("\n");
    };
   for(k= 0;k<4;k++)
    {
        printf("\nZadajde 4 cisla druhej matice do %d.riadku\n",k+1);
        for(l = 0;l<4;l++)
        {
            printf("\nZadajde %d.cislo.",l+1);
            scanf("%d",&pole1[k][l]);
        }
    };
    printf("\n\nVytvorena matica: \n");
    for(k = 0;k<4;k++)
    {
        for(l = 0;l<4;l++)
        {
            printf("%d ",pole1[k][l]);
      }
      printf("\n");
   };  printf("scitana matica: \n");       
   for(m=0; m<4; m++)
   {
      for(n=0; n<4; n++)
      {
         pole3[m][n] = ((pole1[i][j]) + (pole2[k][l]));
         printf("%d ",pole3[m][n]);
      }
         printf("\n");    
   };
    system("pause");
}


dobre je to ze uz mi ukazuje aj vyslednu maticu. ale je zle scitana. 1+3=5


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 18.11.2007 12:40 | lekcia v C++

tomuto nerozumiem: nemozem dat 2 premenne do vsetkychh 3 poli

a preco si tam zasa dal:
pole3[m][n] = ((pole1[i][j]) + (pole2[k][l]));

a nie toto

pole3[m][n] = ((pole1[m][n]) + (pole2[m][n]));

???


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 09.09.07
Prihlásený: 15.02.11
Príspevky: 24
Témy: 2 | 2
Bydlisko: bratislava
NapísalOffline : 18.11.2007 14:00 | lekcia v C++

sento píše:
tomuto nerozumiem: nemozem dat 2 premenne do vsetkychh 3 poli

a preco si tam zasa dal:
pole3[m][n] = ((pole1[i][j]) + (pole2[k][l]));

a nie toto

pole3[m][n] = ((pole1[m][n]) + (pole2[m][n]));

???


pretoze mi to vyhodi maticu 4x4 a na kazdom mieste su tieto cisla: -858993459


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 18.11.2007 14:20 | lekcia v C++

chyba je asi tuto:
Kód:
   for(k= 0;k<4;k++)
    {
        printf("\nZadajde 4 cisla druhej matice do %d.riadku\n",k+1);
        for(l = 0;l<4;l++)
        {
            printf("\nZadajde %d.cislo.",l+1);
            scanf("%d",&pole1[k][l]);
        }
    };
    printf("\n\nVytvorena matica: \n");
    for(k = 0;k<4;k++)
    {
        for(l = 0;l<4;l++)
        {
            printf("%d ",pole1[k][l]);
      }
      printf("\n");
   }; 


... omylom to davas do pole1 a ma tam byt pole2


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 09.09.07
Prihlásený: 15.02.11
Príspevky: 24
Témy: 2 | 2
Bydlisko: bratislava
NapísalOffline : 18.11.2007 14:40 | lekcia v C++

LOL kurna dik ! na to by som asi nikdy neprisiel ze tam mam taku chybu. dakujem velmi pekne uz to funguje ako ma.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 18.11.2007 14:43 | lekcia v C++

ak este mozem poradit, naucte sa pouzivat DEBUGGER, potom si to krokujte a vypisujte premenne, zistite, kde sa to meni, kde je chyba...


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 27.09.07
Prihlásený: 31.12.15
Príspevky: 646
Témy: 233 | 233
Bydlisko: Dubnica nad...
Napísal autor témyOffline : 18.11.2007 17:01 | lekcia v C++

kde je tu chyba? ked mi to nefunguje dobre:
Kód:
#include <stdio.h>
#include<stdlib.h>

int prevod(int N, int z)  //funkcia
{
   int zv;            //zvisok
   int prevod=0;    //cislo v novej sustave
   int pom=1;       //zabezpeci ze dany vysledok po celociselnom deleni zapise vzdy pred predchadzajuci vysledok...

   do
   {
    prevod = prevod + pom*(N%z);
    N /= z;
    pom *= 10;
   }

   while(N>0);

   return prevod;
}
 
int main(void)
{
    int N, z,prevod;
    printf("========================\n");
    printf("= PREVOD CELYCH CISIEL =\n");
    printf("========================\n\n");
   
    printf("Zadaj cislo v desiatkovej sustave:\n");
    scanf("%d",&N); //cislo v desiatkovej sustave
    while (N<=0)
        {
        printf("\nCISLO NIEJE V DESIATKOVEJ SUSTAVE !!!\n");
        printf("Znovu zadaj cislo v desiatkovej sustave:\n\a\a\a");
        scanf("%d",&N); //cislo v desiatkovej sustave
        }

    printf("\nZadaj novu sustavu do ktorej budeme prevadzat od 2 do 10:\n");
    scanf("%d",&z); //nova sustava
   
    while (z<2)
        {
        printf("\nNOVA SUSTAVA NIEJE OD 2 DO 10 !!!\n");
        printf("Znovu zadaj sustavu do ktorej budeme prevadzat:\n\a\a\a");
        scanf("%d",&z); //nova sustava
        }
       
    while (z>10)
        {
        printf("\nNOVA SUSTAVA NIEJE OD 2 DO 10 !!!\n");
        printf("Znovu zadaj sustavu do ktorej budeme prevadzat:\n\a\a\a");
        scanf("%d",&z); //nova sustava
        }
   
         
     
    printf("\ncislo %d v sustave so zakladom %d = %d\n\n", N, z, prevod ); //vysledok
    system("pause");
    return 0;
}


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 18.11.2007 17:46 | lekcia v C++

oprav si tieto 2 riadky:

Kód:
int main(void)
{
    int N, z; // <<< TENTO
.
.
.
.
 printf("\ncislo %d v sustave so zakladom %d = %d\n\n", N, z, prevod(N,z) ); // <<< TENTO
    system("pause");
    return 0;
}


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 27.09.07
Prihlásený: 31.12.15
Príspevky: 646
Témy: 233 | 233
Bydlisko: Dubnica nad...
Napísal autor témyOffline : 19.11.2007 19:37 | lekcia v C++

dik, akurat som si vsimol ze aj v zadani som mal napisane ze do printf som mal zadat prevod(N,z) no nic som zmatkar to je asi tym ze mam nato malo vacu a este musim spravit este jedno zadanie z maticami...:(


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 27.09.07
Prihlásený: 31.12.15
Príspevky: 646
Témy: 233 | 233
Bydlisko: Dubnica nad...
Napísal autor témyOffline : 22.11.2007 17:24 | lekcia v C++

Takze mam taky problem mal som zadanie:
Program nacita rozmery matice (r a s), potom sa nacita matica s rozmermi r x s (rozmery nebudu vacsie ako 50).
Vytvorte funkciu SkumajMaticu, ktora zisti pocet parnych a neparnych prvkov matice. Ak je parnych prvkovviac ako neparnych funkcia vrati 1, v opacnom pripade vrati -1. Ak je parnych a neparnych prvkov rovnaky pocet, funkcia vrati 0.
Specifikacia funkcie:
Kód:
int SkumajMaticu(int r, int s, int M)

Poznamka:
- zistit pocet parnych a neparnych prvkov
- funkcia vrati hodnotu -1/ 0/ 1 podla zadania
- vo funkcii skumaj maticu nenacitavajte ziadne udaje. Vsetky udeje sa nacitaju v hlavnom programe main.

Ja som vytvoril toto ale s chybami, dokaze mi to niekdo opravit ??:

Kód:
#include <stdio.h>
#include<stdlib.h>

int SkumajMaticu(int r, int s, int M)
{
   int parne=0;
   int neparne=0;
   int pp;

   while(M%2==0)
  {
   parne=parne+1;
   else
   neparne=neparne+1;
  }
 
   while(parne=neparne)
  {
     pp=0;
  else
     
      while(parne>neparne)
     {
       pp=parne;
     else
       pp=neparne;
     }
  }

   return pp;
}

int main()
{
    int r; // riadok
    int s; // stlpec
    int i; // pocet riadkov
    int j; // pocet stlpcov
    int M[50][50]; // matica
    int pp; //
   
    printf("=========================\n");
    printf("= POLIA = SKUMAJ MATICU =\n");
    printf("=========================\n\n");
   
    printf("Zadaj pocet riadkov matice:\n");
    scanf ("%d",&r); // riadok
    printf("\nZadaj pocet stlpcov matice:\n");
    scanf ("%d",&s); // stlpec
   
    while (r*s>50)
    {
    printf("\n!!! ROZMER MATICE JE VACSI AKO 50 !!!\a\a\a\n");
    printf("\nZadaj NOVY pocet riadkov matice:\n");
    scanf ("%d",&r); // riadok
    printf("\nZadaj NOVY pocet stlpcov matice:\n");
    scanf ("%d",&s); // stlpec
    }
   
    for(i=0; i<r; i++) //nacitanie matice
    for(j=0; j<s; j++)
    {
    printf("M[%d][%d]=", i+1, j+1);
    scanf("%d",&M[i][j]);
    }
   
    printf("%d",pp);
    system("pause");
    return 0;
}


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 22.11.2007 19:10 | lekcia v C++

Funkcia:
Kód:
int SkumajMaticu(int r, int s, int M)
Ti nebude fungovat;
nastuduj si rozdiely medzi if--while, ale o tom az neskor.
Nepochopil som vobec co je to za parameter int M;
nemalo by tam byt nahodou: int **M ???

Najprv si urob nacitanie a vypisanie povodnej matice v hlavnom programe main.
- po nacitani si ju vypis, a az potom sa mozes pustit do funkcie Skumaj...


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 27.09.07
Prihlásený: 31.12.15
Príspevky: 646
Témy: 233 | 233
Bydlisko: Dubnica nad...
Napísal autor témyOffline : 23.11.2007 17:51 | lekcia v C++

if a while viem aky je medzi nimi ...:)


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 27.09.07
Prihlásený: 31.12.15
Príspevky: 646
Témy: 233 | 233
Bydlisko: Dubnica nad...
Napísal autor témyOffline : 24.11.2007 17:12 | lekcia v C++

uz som to trochu prepracoval ale este stale mi nechce vyhodnotit nednotlive cleny matice... neviem ako to spracit..:( co mi tam chyba?

Kód:
#include <stdio.h>
#include<stdlib.h>

int SkumajMaticu(int r, int s, int A)
{
   int parne=0;
   int neparne=0;
   int pp,i,j;
   
     
   if(A[i][j]%2==0)
   parne=parne+1;
     else
   neparne=neparne+1;



   if(parne=neparne)
   pp=0;
   
   if(parne>neparne)
   pp=1;
     else
   pp=-1;
       

   return pp;
}

int main()
{
    int r; // riadok
    int s; // stlpec
    int i; // pocet riadkov
    int j; // pocet stlpcov
    int A[50][50]; // matica
    int pp=SkumajMaticu(r,s,A[50][50]);
   
    printf("=========================\n");
    printf("= POLIA = SKUMAJ MATICU =\n");
    printf("=========================\n\n");
   
    printf("Zadaj pocet riadkov matice:\t");
    scanf ("%d",&r); // riadok
    printf("\nZadaj pocet stlpcov matice:\t");
    scanf ("%d",&s); // stlpec
   
    while (r*s>50)
    {
    printf("\n!!! ROZMER MATICE JE VACSI AKO 50 !!!\a\a\a\n");
    printf("\nZadaj NOVY pocet riadkov matice:\t");
    scanf ("%d",&r); // riadok
    printf("\nZadaj NOVY pocet stlpcov matice:\t");
    scanf ("%d",&s); // stlpec
    }
   
    for(i=0; i<r; i++) //nacitanie matice
    for(j=0; j<s; j++)
    {
    printf("A[%d][%d]=", i+1, j+1);
    scanf("%d",&A[i][j]);
    }
   
    printf("\n%d\n\n",pp);
    system("pause");
    return 0;
}


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 24.11.2007 18:11 | lekcia v C++

1) Volanie funkcie:
Kód:
int pp=SkumajMaticu(r,s...
musi byt az po nacitani pola, takze to presun na koniec pred prikaz: printf("\n%d\n\n",pp);

2) V takomto tvare: int pp=SkumajMaticu(r,s,A[50][50]); ten treti parameter je cislo int (50*50-ty prvok z matice), a Ty potrebujes odovzdat ako parameter nie len jeden prvok, ale cele pole A, a to urobis tak, ze odovzdas do funkcie adresu 1-veho prvku pola A[0][0], cize:
Kód:
int pp=SkumajMaticu(r,s,&(A[0][0]));


3) to ale znamena, ze funkcia SkumajMaticu musi byt deklarovana takto:
Kód:
int SkumajMaticu(int r, int s, int *A)
... t.j. 3-ti parameter je smernik na int.

4) Vo funkcii SkumajMaticu Ti zatial chyba cyklus, ktory by kontroloval obsah celej matice, takze tam pouzij 2x cyklus for raz pre i a raz pre j;

--- ak to vsetko urobis daj sem opraveny zdrojak, lebo prekladac Ti ho nebude chciet prelozit, konkretne A[ i][j] budes musiet prerobit asi takto: *A[50*i+j]

--- este sa skus naucit (zvyknut si na) to, ze parametre (v Tvojom pripade (int r, int s, int A)) vo funkciach (podprogramoch) su iba formalne, takze sa NEMUSIA zhodovat mena v hlavnom programe a v podprogramoch.


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 27.09.07
Prihlásený: 31.12.15
Príspevky: 646
Témy: 233 | 233
Bydlisko: Dubnica nad...
Napísal autor témyOffline : 24.11.2007 19:15 | lekcia v C++

takto si to myslel?, ale je tam este chyba v tom riadku:
Kód:
int pp=SkumajMaticu(r,s,A[50][50]);

nad:
Kód:
printf("\n%d\n\n",pp);


Kód:
#include <stdio.h>
#include<stdlib.h>

int SkumajMaticu(int r, int s, int A[50][50])
{
   int parne=0;
   int neparne=0;
   int pp,i,j;
     
   for(i=0; i<r; i++)
   for(j=0; j<s; j++)
   
   if(A[i][j]%2==0)
   parne=parne+1;
     else
   neparne=neparne+1;



   if(parne=neparne)
   pp=0;
   
   if(parne>neparne)
   pp=1;
     else
   pp=-1;
       

   return pp;
}

int main()
{
    int r; // riadok
    int s; // stlpec
    int i; // pocet riadkov
    int j; // pocet stlpcov
    int A[50][50]; // matica
   
   
    printf("=========================\n");
    printf("= POLIA = SKUMAJ MATICU =\n");
    printf("=========================\n\n");
   
    printf("Zadaj pocet riadkov matice:\t");
    scanf ("%d",&r); // riadok
    printf("\nZadaj pocet stlpcov matice:\t");
    scanf ("%d",&s); // stlpec
   
    while (r*s>50)
    {
    printf("\n!!! ROZMER MATICE JE VACSI AKO 50 !!!\a\a\a\n");
    printf("\nZadaj NOVY pocet riadkov matice:\t");
    scanf ("%d",&r); // riadok
    printf("\nZadaj NOVY pocet stlpcov matice:\t");
    scanf ("%d",&s); // stlpec
    }
   
    for(i=0; i<r; i++) //nacitanie matice
    for(j=0; j<s; j++)
    {
    printf("A[%d][%d]=", i+1, j+1);
    scanf("%d",&A[i][j]);
    }
   
    int pp=SkumajMaticu(r,s,A[50][50]);
   
    printf("\n%d\n\n",pp);
    system("pause");
    return 0;
}
[/code]


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 24.11.2007 19:34 | lekcia v C++

Kód:
#include <stdio.h>
#include<stdlib.h>

int SkumajMaticu(int r, int s, int *A)
{
...
   for(i=0; i<r; i++)
     for(j=0; j<s; j++)
       if(*A[50*i+j]%2==0)
         parne=parne+1;
       else
         neparne=neparne+1;

...
}

int main()
{
...
    int A[50][50]; // matica
...   
    int pp=SkumajMaticu(r,s,&(A[0][0]) );
    printf("\n%d\n\n",pp);
...
}


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 09.09.07
Prihlásený: 15.02.11
Príspevky: 24
Témy: 2 | 2
Bydlisko: bratislava
NapísalOffline : 25.11.2007 19:05 | lekcia v C++

som tu opet.
do jednorozmerneho dynamickeho pola sa nacitaju prvky kt mam usporiadat vzostupne a zostupne. existije v C nejaka funkcia kt je vopred definovana a hned to vypise? ak nie tak prosim poradte ako na to


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 25.11.2007 19:14 | lekcia v C++

... taka funkcia (na triedenie) priamo neexistuje;

1) .... nacitaj prvky do dynamickeho pola

( float *pole;
float *x;
x = malloc(float);
....
)

2) .... najdi si akykolvek vyhladavaci mechanizmus a aplikuj ho na prvky pola


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 09.09.07
Prihlásený: 15.02.11
Príspevky: 24
Témy: 2 | 2
Bydlisko: bratislava
NapísalOffline : 25.11.2007 19:15 | lekcia v C++

ved prave ten druhy bod neviem ako na nho


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 25.11.2007 19:22 | lekcia v C++

"bublinive triedenie" (asi najprimitivnejsie):

ak mas N prvkov v poli:
a) - vezmes 1. a 2. prvok, ak 1>2, vymenis ich
b) - vezmes 2. a 3. prvok, ak 2>3, vymenis ich
c) atd az po N-1 a N

body a) b) c) opakujes (N-1) krat


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 09.09.07
Prihlásený: 15.02.11
Príspevky: 24
Témy: 2 | 2
Bydlisko: bratislava
NapísalOffline : 25.11.2007 19:43 | lekcia v C++

vobec netusim ako to napisat
tu je moja cast a dalej neviem ako to napisat
Kód:
#include <stdio.h>               
#include <stdlib.h>
#include <conio.h>
 
int main(void)
{
   int *pole, prvky, i;             
 
      printf("Zadaj pocet prvkov pola: ");           
      scanf("%d", &prvky);

 

printf("\n\n\n");
 
 

      pole = (int*) malloc(prvky * sizeof(int*));         


         for (i = 0; i < prvky; i++)               
         {
         pole[i] = (int) malloc(prvky * sizeof(int));         
            {
            printf("Zadaj %d prvok pola: ", i + 1);
            scanf("%d", &pole[i]);             
            }
         }
 
         
         
printf("\n");



         {
            printf("nase pole:\n\n");
         for (i = 0; i < prvky; i++)         
            {
            printf(" %d ", pole[i]);
            }
         printf("\n\n");
         }
         getch();
}


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 25.11.2007 19:53 | lekcia v C++

tento riadok:
Kód:
pole[i] = (int) malloc(prvky * sizeof(int));
uplne vynechaj;

a triedenie zhruba takto:

Kód:
for (i=0; i<pocet-1; i++) // cyklus treba opakovat (N-1) krat
  for (int j=0; j<pocet-1; j++)
  { if(pole[j]>pole[j+1]
     { // tuto vymenis tie 2 prvky
     }
  }


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 18.11.07
Prihlásený: 10.01.09
Príspevky: 9
Témy: 2 | 2
NapísalOffline : 25.11.2007 19:58 | lekcia v C++

Prepáčte, že narúšam Vášu komunikáciu, ale chcel by som Vás poprosiť ?
Kde sa dá stiahnúť Turbo Pascal 6,0 v SK alebo CZ. Alebo ako môžem začať
so zvládnutím tohto jazyka??
Pomôžete začiatočníkový, ktorý chce začať s programovaním? Ďakujem!!!
budha7@gmail.com


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 25.11.2007 20:03 | lekcia v C++

budha7 píše:
Kde sa dá stiahnúť Turbo Pascal 6,0...ka??
Pomôžete začiatočníkovi,...


Ja som Pascal nepouzival, snad niekto iny... (iba ak C, C++, C# ale aj co-to ine okrem Pascalu :( )


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 18.11.07
Prihlásený: 10.01.09
Príspevky: 9
Témy: 2 | 2
NapísalOffline : 25.11.2007 20:14 | lekcia v C++

Ďakujem! škoda!


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 18.07.07
Prihlásený: 20.02.10
Príspevky: 53
Témy: 9 | 9
Bydlisko: Trenčín - S...
NapísalOffline : 26.11.2007 21:01 | lekcia v C++

Bry den sa praje pani programatori. Mam jeden problem s ktorym si neviem dat rady tak skusim stastie tu.

Mam taketo zadanie:
Citácia:
Úlohou tohto zadania bude napísať program, ktorý bude analyzovať zdrojový kód jazyka C. Úlohou programu bude zistiť, koľko daný obsahuje zdrojový kód príkazov. Vieme, že v jazyku C každý príkaz končí bodkočiarkou.
Túto úlohu riešte pomocou funkcie int analyzujKodC(char nazovSuboru[]); Ako parameter bude reťazec, ktorý je vlastne názov súboru na HDD, ktorý chceme analyzovať. Tento súbor treba vo funkcii otvoriť, zanalyzovať a zatvoriť. Funkcia vráti počet príkazov v danom zdrojovom súbore.
Názov súboru nebudete načítavať z klávesnice, ale tento názov bude ako vstupný parameter programu (funkcie main). Ak sa bude Váš program volať zadanie3.exe, potom ten program spustíte nasledovne: „zadanie3.exe zdrojak.cpp“. V tomto prípade bude Váš program analyzovať súbor zdrojak.cpp (ak existuje). V prípade, že program spustíte bez vstupného parametra, tak bude analyzovať váš zdrojový súbor (zadanie3.cpp). V prípade, ak súbor neexistuje, vypíšte chybové hlásenie.
Pomôcky: pre spúšťanie programu s parametrami vyžijete verziu funkcie main:
int main(int argc, char* argv[])
Vzorový výstup programu: Analyzujem súbor : zdrojak.cpp Pocet príkazv v tomto súbore: 25


Telo tej funkcie viem spravit, to nie je problem nacitavat zo suboru znaky a pocitat ";", ale velke problemy mi robi otvorenie toho suboru, neviem co ma byt v maine a co v tej konkretnej funckcii, prose mam v tom otvarani a citani zo suborov gulas. Ak by mi sem niekto napisal cast kodu ktora to riesi bol by som strsne vdacny, to pocitanie si uz doriesim sam.


_________________
MB: Gigabyte GA M57 SLI S4 | P: Athlon 64 X2 5200+(Winsdor) | RAM: ADATA Extreme edition Vitesta 2x1024MB 800MHz | G: Saphire AMD Radeon HD 2600XT 256Mb DDR4 | HDD: Seagate BArracuda 160GB 8MB Cache | Z: Fortron Blue Storm 400W
"92% of teens have moved onto rap. If you are part of the 8% that still listen to real music, copy and paste this into your signature"
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 26.11.2007 21:38 | lekcia v C++

Kód:
analyzujKodC(char nazovSuboru[])
{
   int pocet_prikazov = 0;

   // tuto otvoris subor "nazovSuboru", spocitas bodkociarky a zavries ho

   return pocet_prikazov;
}

void main(int argc, char *argv[])
{
   // ak sa takto spusti program, argc obsahuje pocet argumentov (vratane samotneho programu)
   // argv[0] ... meno samotneho programu.exe
   // argv[1] ... 1. parameter za     program.exe par1 par2 ...
   // argv[2] ... 2. parameter za     program.exe par1 par2 ...

   char *meno_suboru;
   int pocet;

   meno_suboru = (char *)malloc(333);
   if(argc==1)
   { // program je spusteny bez parametra;
      meno_suboru = argv[0];
     // meno soboru je xyz.exe; t.j. treba nahradit exe za cpp !!!
      int len = 0;
      int znak = 'x';
      while(znak!=0)   // najdeme koniec retazca
      {
         len++;
         znak = meno_suboru[len];       
      }
      meno_suboru[len-3] = 'c';   // a prepiseme exe na cpp
      meno_suboru[len-2] = 'p';
      meno_suboru[len-1] = 'p';
   }
   else
   { // bol zadany parameter,
      meno_suboru = argv[1];
   }
   
   pocet = analyzujKodC(meno_suboru);

   printf("....%d....", pocet);
}


oukej ?


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 18.07.07
Prihlásený: 20.02.10
Príspevky: 53
Témy: 9 | 9
Bydlisko: Trenčín - S...
NapísalOffline : 27.11.2007 22:19 | lekcia v C++

fuuha diki je to super spravene, dokonca aj to osetrenie exe hmm to som necakal. Ale nerozumiem tomuto riadku:

Citácia:
meno_suboru = (char *)malloc(333)


_________________
MB: Gigabyte GA M57 SLI S4 | P: Athlon 64 X2 5200+(Winsdor) | RAM: ADATA Extreme edition Vitesta 2x1024MB 800MHz | G: Saphire AMD Radeon HD 2600XT 256Mb DDR4 | HDD: Seagate BArracuda 160GB 8MB Cache | Z: Fortron Blue Storm 400W
"92% of teens have moved onto rap. If you are part of the 8% that still listen to real music, copy and paste this into your signature"
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 28.11.2007 8:44 | lekcia v C++

Ospravedlnujem sa, ale ten prikaz mozes kludne vyhodit.
Povodne som myslel, ze do premennej meno_suboru (pole znakov) budem kopirovat meno suboru, ale nakoniec som to nepouzil.
Takze to alokovanie/rezervovanie pamate (malloc) na nazov suboru ani nie je potrebne.


Offline

Užívateľ
Užívateľ
lekcia v C++

Registrovaný: 18.07.07
Prihlásený: 20.02.10
Príspevky: 53
Témy: 9 | 9
Bydlisko: Trenčín - S...
NapísalOffline : 28.11.2007 13:37 | lekcia v C++

noo jasne, sice taky prikaz ece nepoznam ale sak mozno casom.. :lol: no strsne ti dakujem je to super spravene, som rad ze este existuju ochotny ludia na tomto svete(fore).


_________________
MB: Gigabyte GA M57 SLI S4 | P: Athlon 64 X2 5200+(Winsdor) | RAM: ADATA Extreme edition Vitesta 2x1024MB 800MHz | G: Saphire AMD Radeon HD 2600XT 256Mb DDR4 | HDD: Seagate BArracuda 160GB 8MB Cache | Z: Fortron Blue Storm 400W
"92% of teens have moved onto rap. If you are part of the 8% that still listen to real music, copy and paste this into your signature"
 [ Príspevkov: 128 ] 1, 2, 3, 4, 5


lekcia v C++



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Mám sa učiť C ++/objective C/ C#?

v Assembler, C, C++, Pascal, Java

5

790

08.07.2014 20:40

XOLOO

V tomto fóre nie sú ďalšie neprečítané témy.

Hladam hracov na C&C Generals Zero Hour

v Počítačové hry

10

1289

07.03.2007 19:22

Spirit

V tomto fóre nie sú ďalšie neprečítané témy.

rozdiel medzi Borland 3.1 C++ vs Net. C++

v Assembler, C, C++, Pascal, Java

4

617

20.07.2010 12:54

walther

V tomto fóre nie sú ďalšie neprečítané témy.

Naučte se C++ za 21 dní + C++Builder 6

v Assembler, C, C++, Pascal, Java

18

2469

21.05.2010 21:08

Wpegb

V tomto fóre nie sú ďalšie neprečítané témy.

K: PC Literaturu- C++/C#/java/python/ruby/RoR

v Kúpim

0

460

13.05.2014 18:16

expresado

V tomto fóre nie sú ďalšie neprečítané témy.

Hledá se programátor C/C++ pro vesmírné projekty (Praha)

v Ponuka práce

0

1331

10.05.2016 14:59

evolvsys

V tomto fóre nie sú ďalšie neprečítané témy.

Čo mi treba na programovanie v C/C++

v Assembler, C, C++, Pascal, Java

17

1192

25.09.2011 18:14

reDo

V tomto fóre nie sú ďalšie neprečítané témy.

aky je rozdiel medzi C++ a Visual C++ ?

v Assembler, C, C++, Pascal, Java

8

2003

19.02.2011 22:46

vendo2

V tomto fóre nie sú ďalšie neprečítané témy.

Darujem knihy o programovaní (HTML, Java, Visual C++, C++ Builder, Android)

v Vymením a darujem

0

475

01.04.2019 11:20

tomasteicher

V tomto fóre nie sú ďalšie neprečítané témy.

Hladame 3x C/C++ Linux developer- projekt 11/2016-2/2017

v Ponuka práce

1

604

24.10.2016 15:28

michalesku

V tomto fóre nie sú ďalšie neprečítané témy.

C# alebo C++ appka/program na výpočty

v Assembler, C, C++, Pascal, Java

1

421

20.03.2015 22:36

walther

V tomto fóre nie sú ďalšie neprečítané témy.

C/C++ problém so súbormi a hodnotami

v Assembler, C, C++, Pascal, Java

2

347

09.12.2012 10:43

nBXXL

V tomto fóre nie sú ďalšie neprečítané témy.

Ako nastavit grafikuv AMD catalyst c.c.

v ATI/AMD grafické karty

17

1515

26.12.2013 11:38

walther

V tomto fóre nie sú ďalšie neprečítané témy.

C - Ako prekompilovať .c súbor do .exe?

v Assembler, C, C++, Pascal, Java

7

589

02.11.2012 18:47

MasterMatoSK

V tomto fóre nie sú ďalšie neprečítané témy.

program na projekt (C#, C++, pascal, java)

v Assembler, C, C++, Pascal, Java

2

872

12.03.2009 12:08

Svjatogor

V tomto fóre nie sú ďalšie neprečítané témy.

C# alebo C++ , ktore knizky na ucenie?

v Assembler, C, C++, Pascal, Java

20

1864

12.02.2011 0:12

The



© 2005 - 2024 PCforum, edited by JanoF