Tömbök típusa: void és fgv. típus kivételével minden.

Egydimenziós tömbök, inicializálás:

típus tömbnév [méret] ; // indexelés: 0-tól (méret-1) -ig.

 
pl.: 
        int a[5];
 
        int i;
        for (i=0; i<5; i++)
               a[i] = i * i;
        
        double nap[24];
        nap[-1] = 1.234;       //hiba
        nap[24] = 3.12456;     //hiba

Inicializálás:

típus tömbnév[méret] = {vesszővel tagolt konstansok};

pl.:
        int a[10] = {1,2,3,4,5,6,7,8,9,10};
        char szo[8] = {'a','l','m', 'a'};             //karakter tömb , többi 0 vagy határozatlan
        float szamok[] = {12.3, 23.4, 34.5, 45.6}; // szamok[4] lesz...
 
 
//tömb méretének lekérsezése:
        # define NSZAM (sizeof(szamok) / sizeof(szamok[0])) //makróval... vagy:
 
        const int nszam = sizeof(szamok) / sizeof(szamok[0]);

Feladat:

1 a. Írjon programot, amely véletlen számokkal inicializál egy 10 egész elemű tömböt (stdlib.h / rand()), majd kiírja az értékek átlagát,

1 b. illetve az egyes elemekhez tartozó átlagtól való abszolút eltérést!

2. Írjon programot a Fibonacci sor első 20 elemének kiszámolására! (a[0]=1;a[1]=1; a[i]=a[i-1]+a[i-2];)

 

Muatatók és a tömbök:

int a[10];
int *p;        //egészre mutató pointer
p = a;         //Vagy...
 
p = &a[0];     //az a vektor első elemére mutató pointer

*(p+i)-vel végigkárhatjuk a tömb elemeit...

//A tömb i-edik elemének címe:
&a[i], &p[i], a+i, p+i 
 
//A tömb 0-dik eleme:
a[0], p[0], *a, *p, *(a+0), *(p+0)
 
//A tömb i-edik eleme:
a[i], p[i], *(a+i), *(p+i)
 

Feladat:

a. A mutatós műveleteket felhasználva készítsen programot két (véletlen számokkall generált) lebegőpontos vektor skaláris szorzatának kiszámítására! (Ellenőrzési lehetőség: a véletlen számhoz 1/a a másik vektorban...)

 

Sztringek:

Karakterláncok tárolása: Karakterömbök, amelyekben a karaktersorozat végét a nulla byte ('\0') jelzi!

Tehát max. 80 karakteres sztring tárolásához char[81] kell!!! Inicializáláskor nem szabad megfeledkezni a lezáró karakterről:

char st1[10] = {'A', 'L', 'M', 'A', '\0'};    //10 byte első 5 byte-ja
char st1[] = {'A', 'L', 'M', 'A', '\0'};             //5 byte-os tömb
 
//Egyszerűbben:
char st1[10] = "ALMA";         // a fordító elhelyezi a lezáró karaktert...
char st1[] = "ALMA";

Sztringekre vonatkozó műveletek: (string.h)

Részletesen: http://ccs.ucsd.edu/c/string.html

Művelet

Függvény

sztring beolvasása

scanf, gets

sztring kiírása

printf, puts

értékadás

strcpy

hozzáfűzés

strcat

sztring hosszának lekérdezése

strlen

sztringek összehasonlítása

strcmp

Példa:

Sztring beolvasása -> nagybetűs változat kiírása fordítva:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
main()
{
char s[80];
int i;
 
printf("kérek egy szöveget: ");
gets(s);
 
for(i = strlen(s)-1; i>=0; i--)
        printf("%c", toupper(s[i]));
printf("\n");
}

Feladat:

1. Írjon sztring másolására szolgáló programot mutatók felhasználásával!

2. Írjon sztring titkosító programot (XOR-ral, #define KULCS 0xE7; ) !