C-jednorozmerna pole – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C-jednorozmerna pole – C / C++ – Fórum – Programujte.comC-jednorozmerna pole – C / C++ – Fórum – Programujte.com

 

Vlákno bylo úspěšně vloženo.
Pokud sám přijdeš na řešení, nezapomeň ho sem přidat!
matesomg0
Duch
18. 10. 2016   #1
-
0
-

Dobrý den, dostal jsem úkol :

Napište program, který předá pole a počet jeho prvku do funkce, která zkopíruje sudé prvky do nového pole.Obě pole se pak pomocí další funkce vytisknou .

Program celkem šlape, ale objevil se problém. Když tisknu druhé pole, tak se mi tam objevují nějaká čísla navíc, čím je to způsobené? Nebo asi vím čím to je, ale nevím, jak tento nedostatek odstranit.

Zdrojak dole

Děkuji

#include <stdio.h>

#define MAX   10

int sude(int x[],int y[],int pocet);    // pole_in, pole_out, pocet prvku
void tiskni();

main()
{
  int  a[MAX] = { 5, 8, 2, 1, 9, 4, 6, 0, 7, 3 },    
       b[MAX],
                
  int  i, kolik,velikost;

  kolik = sude(a,b,MAX);
  printf("%d",kolik);    
  tiskni(a,b);    
  
}

int sude(int x[],int y[],int pocet)
{
  int  i,
       kolik_sudych = 0;

  for (i = 0;  i <pocet;  i++) {
    if(x[i]%2==0){
        y[i]=x[i];

        kolik_sudych++;
    }
}    

  return (kolik_sudych);
}


void tiskni(int x[],int y[])
{
  int i;

  printf("\n\nPuvodni pole : \n");
  for (i = 0;  i < MAX;  i++)
    printf("%2d ", x[i]);

  printf("\nPole jen se sudymi prvky : \n");
  for (i = 0;  i < MAX;  i++)
    printf("%2d ", y[i]);
}

Nahlásit jako SPAM
IP: 188.75.128.–
JoDiK
~ Anonymní uživatel
987 příspěvků
18. 10. 2016   #2
-
+1
-
Zajímavé
BDS +

#1 matesomg
Program tedy moc nešlape, protože nedělá to co má. Navíc to zadání celkem určitě není přesně reprodukováno.

Funkce měla "zkopírovat sudé prvky do nového pole". Tvoje funkce nekopíruje sudé prvky, ale přepisuje náhodné hodnoty ve druhém poli na pozicích sudých prvků těmito sudými prvky. Ostatní hodnoty nechává náhodné a ty pak vypisuješ. Zkus opravdu do druhého pole kopírovat sudé prvky, pro tvůj příklad pak bude zřejmě obsahovat jen těchto pět hodnot : 8, 2, 4, 6, 0. (předpokládám, že pětku jako počet sudých tvůj program vypisuje...)

Dále tipuju, že v zadání bylo něco ve smyslu "Obě pole pak pomocí další funkce vytiskněte, funkci pro tisk předávejte opět pole s počtem prvků"

Takže tisk obou polí měl IMHO být třeba nějak takto:

tiskni(a,MAX); 

tiskni(b,kolik); 

Nahlásit jako SPAM
IP: 88.103.228.–
BDS+3
Věrný člen
18. 10. 2016   #3
-
0
-

#1 matesomg
lžeš, tohle ti nemohlo jít ani zkompilovat!

Nahlásit jako SPAM
IP: 185.69.69.–
W10 :)
matesomg0
Duch
18. 10. 2016   #4
-
0
-

#2 JoDiK
jak je tam mám nakopírovat? s polem ještě moc neumím pracovat

Nahlásit jako SPAM
IP: 188.75.128.–
BDS+3
Věrný člen
18. 10. 2016   #5
-
0
-

#4 matesomg
jde hlavně o to, že je tam musíš postupně přidávat a pak to nemůžeš tisknout po max, když je jich tam 5 

for (i = 0;  i <pocet;  i++) {
    if(x[i]%2==0){
        y[kolik_sudych++]=x[i]; //<-
    }
}
printf("\nPole jen se sudymi prvky : \n");
  for (i = 0;  i < kolik;  i++) //<-
    printf("%2d ", y[i]);

(v těchto dvou případech jde víc o logiku než programování)

máš ještě hodně chyb, ale nemůžeme tady za tebe psát DÚ

Nahlásit jako SPAM
IP: 185.69.69.–
W10 :)
JoDiK
~ Anonymní uživatel
987 příspěvků
19. 10. 2016   #6
-
0
-
Nahlásit jako SPAM
IP: 88.103.228.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý