Skočiť na obsah

C, C++


bad_guy

Odporúčané príspevky

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");

}

Odkaz na príspevok
Zdieľať na iných stránkach

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

Top prispievatelia v tejto téme

  • Klingonka

    5

  • Darkman

    4

  • bad_guy

    2

  • Ignatius

    2

  • Pred 2 rokmi...

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] ?

Odkaz na príspevok
Zdieľať na iných stránkach

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ť).

Odkaz na príspevok
Zdieľať na iných stránkach

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 :)

Odkaz na príspevok
Zdieľať na iných stránkach

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ží.

Odkaz na príspevok
Zdieľať na iných stránkach

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...

Odkaz na príspevok
Zdieľať na iných stránkach

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];
Odkaz na príspevok
Zdieľať na iných stránkach

  • Pred 1 mesiacom...
  • Pred 2 mesiacmi...
  • Pred 3 rokmi...
  • Pred 2 rokmi...

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

Odkaz na príspevok
Zdieľať na iných stránkach

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