Skočiť na obsah

C, C++


bad_guy

Odporúčané príspevky

Zverejnené

viete mi pomoct napisal som program ale pre nejaku chybu to nechce ist ...

tu je zdrojak k tomu..

#include<stdio.h> /*kniznica standardneho V-V */

 

main()

{

int a[100],i,n; /*pole, index. premenna, rozmer pola*/

 

printf("Zadaj pocet prvkov pola: "); /*vyzva*/

scanf("%d", &n); /*vstup poctu prvkov*/

 

for(i=0; i<n; i++) /*cyklus pre citanie prvkov*/

{

printf("\n Zadaj %d. prvok: ",i+1);

scanf("%d", &a); /*vstup i-teho prvku*/

}

 

printf("\n Nacitane prvky su:\n");

 

for(i=0; i<n; i++); /*cyklus pre tlac prvkov*/

printf("%d \t", a); /*vystup i-teho prvku*/

 

printf("\n");

}

  • Odpovedí 17
  • Vytvorené
  • Posledná odpoveď

Top prispievatelia v tejto téme

  • Klingonka

    5

  • Darkman

    4

  • bad_guy

    2

  • Ignatius

    2

Zverejnené

Máš tam navyše bodkočiarku, skús nájsť kde :lol: (aby som nebol až taký hnusný, tak by nemala byť v tom riadku s druhým cyklom for)

Zverejnené

for(i=0; i<n; i++);

myslis toto??

dik .... :lol:

mas nejake skusenosti z C-ckom:?

Zverejnené

Nemáš zač... Nie, nemám (zatiaľ), ale kúsok odo mňa sedí môj brat, ktorý v tom robí, tak prečo ho nevyužiť :) :) :lol:

  • Pred 2 rokmi...
Zverejnené

Našla som svoje staré programky z roku 2 tak sa hrajkám.

 

 

[size=1]#include <stdio.h>
#define KRAT  3

typedef struct  {   
	char name[15];
	int age[2];
	int cislo[12];
}  rekord;

rekord rekord[KRAT];

main()
{
	int i, id;
	for(i=0; i<KRAT; i++) {
		printf("\nMeno:	");
		scanf("%s", &rekord[i].name);
		printf("Vek:	 ");
		scanf("%s", &rekord[i].age);
		printf("CIslo:   ");
		scanf("%s", &rekord[i].cislo);
	}
	getchar();
   ;
	for(id=1; id<=KRAT;) {
		for(i=0; i<KRAT; i++) {
			   printf("\n%d.\t%s\t%s\t\t%s", id++, rekord[i].name, rekord[i].age, rekord[i].cislo);
		}
	}
	putchar('\n');
	getchar();
   ;
}[/size]

 

Ide mi o ten PRINTF. Ako to mám zarovnať výstup aby mi to neskákalo ďalej keď je dlhší text? Tabulátory nepomáhajú. Mám dať name[20] ?

Zverejnené

A nemôžem nájsť nikde nič o Metódach triedenie /bubblesort, quicksort, heapsort.../ niečo podrobnejšie. Na internete je väčšinou iba Pascal a neviem si to prepísať do C.

 

Nejaká dobrá knižka najlepšie.. (aj tak nemám čo čítať).

Zverejnené

uf...to ti akoze aj zozerie bez padu?

 

najprv

typedef struct  {   
	char name[15];
	int age[2];
	int cislo[12];
}  rekord;

a potom

 

scanf("%s", &rekord[i].age);

skus zadat vek napr 1000...co ti to spravi :lol:

 

takto to je spravne

 

typedef struct  {   
	char name[15];
	int age;
	int cislo;
}  rekord;

printf("Vek:	 ");
		scanf("%d", &rekord[i].age);
		printf("CIslo:   ");
		scanf("%d", &rekord[i].cislo);

printf("\n%d.\t%s\t%d\t\t%d", id++, rekord[i].name, rekord[i].age, rekord[i].cislo);

int age[2] je definovanie pola int o velkosti 2.

t.j. ze mas definovanu premennu, do ktorej si schopna zapisat dve int cisla. Int cislo je od -32767 po 32767....takze do premenej age si schopna zapisat 2 taketo cisla pomocou age[0] resp age[1].

 

Problem je ten, ze ty toto pole int[] pouzivas ako keby islo o char[]. Co je zle...ba az hrozne :) Neviem kolko z teorie C ovladas, ale memory corruption ako vysity ;)

 

Ak nechapes preco je to zle, tak sa opytaj. Pokusim sa to nejako zrozumitelne podat :)

Zverejnené

Zožerie. Ten rekord som mala pôvodne veľké ale zmenilo to - kompilátor Freespacu-fórumu to zmenil na malé. Dokonca dal rekord a nie "rekord".

 

Aha ? Skúsim to dať ako si mi poradil. Ďakujem. Zrútilo sa mi to. Dala som char age[3] a už to beží.

Zverejnené

O velky/maly rekord mi nejde.

 

Ja mam skor pocit ze nechapes definiciam premenych resp. poli.

Z toho zapisu mi vychadza ze si myslis ze int[2] predstavuje dvojciferne cislo.

Zverejnené

Aj to. Ja som si myslela že do Char-u sa nesmie dávať číslo.

nechapes definiciam premenych resp. poli

Mne sa to miešalo. Už som si to pozrela. Mám to tak polopatisticky napísané s tým H e l l o \0.

Moja chyba, moja chyba...

Zverejnené

Do Char sa moze dat hociaky standardny znak. Ale len jeden. Ten char v skutocnosti drzi cislo od 0-255 co je high ASCII kod znaku, ktory si donho vlozila.

Char[] je pole Charov...a teda postupnost znakov. Kde cislo v zatvorkach urcuje aky dlhy moze byt maximalne tento retazec. Pritom netreba zabudat ze dotoho sa zapocitava aj '\0' znak. Na jednotlivy znak pola sa mozes odkazovat pomocou [0] resp [1]....

C ako take nepozna retazec znakov, a takymto sposobom si ho vynahradza.

 

Do Int mozes dat hociake cislo od -32767 po 32767. Tak uz len z toho dovodu je daleko vhodnejsi na drzanie cisiel. Nehovoriac o tom, ze ak si zapises cislo ako char[] tak s nim niesi schopna ziadnych aritmetickych operacii, kedze ide o pole znakov.... nie cislo ako celok.

 

Pri int[] ide o rovnaky princip ako pri char[], a teda ide o postupnost int cisiel. Povedzem chcem od uzivatela aby mi zadal 5 cisiel.... tak mozem spravit toto

int cislo1, cislo2. cislo3, cislo4, cislo5;
co je slusne povedane hnusne :lol:

alebo to urobit bezne

int cisla[5];
  • Pred 1 mesiacom...
Zverejnené

vedeli ste ze premennu nemusite inicializovat takto: int i = 3; ale staci len: int i(3); //funguje len v C++

  • Pred 2 mesiacmi...
  • Pred 3 rokmi...
Zverejnené

Na tejto stránke pribúdajú návody v programovaní v jazyku C pre začiatočníkov a pokročilých. Kto sa učí programovať možno sa mu to zíde.

  • Pridať bod 1
  • Pred 2 rokmi...
Zverejnené

Cauko, potrebujem poradiť.. Ako nacitam cislo na konci nejakej vety? Alebo aspon za nejakym konkretnym znakom ako " : " napr?

Zverejnené

Cauko, potrebujem poradiť.. Ako nacitam cislo na konci nejakej vety? Alebo aspon za nejakym konkretnym znakom ako " : " napr?

1. Najdes posledny index znaku ':'

2. Splitnes si retazec na 2 okolo toho indexu (t.j. v [0] ti skonci veta pred ':', v [1] to cislo)

3. Convertnes retazec v [1] na cislo

Vytvorte si účet alebo sa prihláste, aby ste mohli písať príspevky

Ak chcete odoslať príspevok, musíte byť členom

Vytvoriť konto

Zaregistrujte si nový účet v našej komunite. Je to ľahké!

Zaregistrovať si nové konto

Prihlásiť sa

Máte už konto? Prihláste sa tu.

Prihlásiť sa teraz
×
×
  • Vytvoriť nové...

Dôležitá informácia

Táto stránka používa súbory cookies, pre zlepšenie používania stránok tohto webu. Pre viac informácií kliknite sem. Ďalšie informácie nájdete na stránke Zásady ochrany osobných údajov