Kontrola, funkce void, gets, puts – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Kontrola, funkce void, gets, puts – C / C++ – Fórum – Programujte.comKontrola, funkce void, gets, puts – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
noob0
Duch
2. 2. 2014   #1
-
0
-

Zdravím,

Netušil byste někdo, proč mi nasledující program nefunguje:

#include <stdio.h>
char pole[9]

void nacti(char pole[9])
{
printf("Zadejte maximalne deset cisel: ");
gets(pole);
}

void vypis_prvek(char pole[9])
{
puts(pole);
}

int main (void)
{
  nacti();

  short j;
  for(j=0; j<10;j++) vypis_prvek(j);
  getchar();

  int d=0;
  if(!d)++d;
  if(d--)d+=2;
  printf("%i",d);
  getchar();

}

Předem děkuji mnohokrát za odpověď.

Nahlásit jako SPAM
IP: 86.49.117.–
Reklama
Reklama
Romeritton0
Newbie
2. 2. 2014   #2
-
0
-

Keď si pole spravil ako globálne pole, tak ho nemusíš funkcii predávať. Ďalšia vec je, že si alokoval pole o veľkosti 9 a pritom načítavaš 10 prvkov. Navyše reťazec musí mať na konci ukončovací znak '\0', taže musíš aklokovať pole o velkosti 11. A pritom načítavas čísla, takže to pole má byť pole intov, nie charov.

To je len zopár problémov, asi to je nejaká úloha a máš tam opraviť všetky chyby, takže si s tým poraď sám, sú to základy.

Nahlásit jako SPAM
IP: 176.101.176.–
noob0
Duch
2. 2. 2014   #3
-
0
-

#2 Romeritton
to už je upravené právě ale prostě už nevím, jsem bohužel uplný začáteční, původní znění vypadá takto: 

int pole[9];

void nacti ( ) // tato procedura nacte cele pole
{

}

void vypis_prvek(  ) //tato procedura vypise pozadovany prvek
{

}

int main (void)
{
  nacti();
  
  short j;
  for(j=0; j<10;j++) vypis_prvek(j);
  getchar();
  
  int d=0;
  if(!d)++d;
  if(d--)d+=2;
  printf("%i",d);
  getchar();
  
}
Nahlásit jako SPAM
IP: 86.49.117.–
Romeritton0
Newbie
2. 2. 2014   #4
-
0
-

Ok, je to krátke, tak tu to máš, ale aj tak si myslím, že by si to mal vedieť

int pole[12];

void nacti ( ) // tato procedura nacte cele pole
{
fgets(pole, 12, stdin); //12, pretoze fgets nacita aj '\n' a prida '�'
pole[10] = '\0'; //takto sa zbavis '\n'
}

void vypis_prvek( short j ) //tato procedura vypise pozadovany prvek
{
printf("%d\n", pole[j]); 
}

int main (void)
{
  nacti();
  
  short j;
  for(j=0; j<10;j++) vypis_prvek(j);
  getchar();
  
  int d=0;     //co ma robit tento zazrak ozaj netusim
  if(!d)++d;
  if(d--)d+=2;
  printf("%i",d);
  getchar();
  
}
Nahlásit jako SPAM
IP: 176.101.176.–
noob0
Duch
2. 2. 2014   #5
-
0
-

díky moc:)

Nahlásit jako SPAM
IP: 86.49.117.–
noob0
Duch
3. 2. 2014   #6
-
0
-

#4 Romeritton
hlasí mi to šest chyb:/

Nahlásit jako SPAM
IP: 86.49.117.–
Romeritton0
Newbie
3. 2. 2014   #7
-
0
-

Som myslel, že stdio si tam už nainkluduješ sám. Ale aj tak tam bola chyba, lebo som zabudol, že som to zmenil na pole intov. Teraz by to už malo fungovať, aj keď stále neviem, čo má robiť ten koniec :D

#include <stdio.h>

int pole[10];

void nacti ( ) // tato procedura nacte cele pole
{
	int i;
	for (i = 0; i < 10; i++) 
		scanf("%d", pole + i);
}

void vypis_prvek( short j ) //tato procedura vypise pozadovany prvek
{
	printf("%d\n", pole[j]); 
}

int main (void)
{
  nacti();
  
  short j;
  for(j=0; j<10;j++) vypis_prvek(j);
  getchar();
  
  int d=0;     //co ma robit tento zazrak ozaj netusim
  if(!d)++d;
  if(d--)d+=2;
  printf("%i",d);
  getchar();
  
  return 0;  
}
Nahlásit jako SPAM
IP: 176.101.176.–
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, 128 hostů

Podobná vlákna

(void) — založil liborb

Void* na byte[] v C# — založil Radek Chalupa

Typedef void* ve VB.NET — založil Štefan Kakaš

Void * alebo delegate z c# — založil Miro1701

Moderátoři diskuze

 

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