Diskuze: obraceni pole v C?

C++ C a C++ obraceni pole v C?

Avatar
figlanto
Člen
Avatar
figlanto:

Ahojte, mám problém s jednoduchým prográmkem do...mám vytvořit pole např od 0 po 10 s tím na výstupu mi to vypíše dané pole a zároven pole obráceně to jest od 10 po 0 ... napsal jsem to nějak takhle...

#include <stdio.h>
#include <string.h>
#define poc 15
int main()
{
 int pole[poc];
 int i;

 printf("znaky z pole: ");

 for(i=0;i<=poc;i++){
    printf("%i ",pole[poc]);
}
 printf("\nobracene znaky: ");

for(i=poc;i>=0;i--){
    printf("%i ",pole[poc]);
}

 return 0;
}

ale muj profesor mi na to napsal tenhle mail ... " s tím obrácením pole jste to bohužel zatím asi nepochopil. Jde o to, že přímo v paměti pole je potřeba prohodit první a poslední prvek, druhý a předposlední prvek, třetí a předposlední prvek atd. Aby se při další práci s polem již pracovalo s hodnotami ve změněném pořadí, bez ohledu na to jak nebo v jakém cyklu je použijete. Prostě po vás chci, abyste provedl v poli tu úpravu pořadí natrvalo..."

prosím o radu, napadlo mě použít bubble sort ale moc si s tím nevím rady??

Díky za odpovědi budu Vám zavázán! :))

 
Odpovědět 15.11.2014 22:30
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na figlanto
Snorlax:

Podle mě to jde vyřešit pouze další proměnnou:

#include <stdio.h>
#include <string.h>
#define poc 15

int main() {
    int i;
    int ii;
    int pole[poc] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, 400};
    int obracene_pole[poc];
    printf("znaky z pole: ");

    for (i = 0; i <= poc; i++) {
        printf("%i ", pole[i]);
    }
    printf("\nobracene znaky: ");

   for(i=poc, ii=0;i>=0;i--,ii++){
       obracene_pole[ii]=pole[i];
   }

      for (i = 0; i <= poc; i++) {
        printf("%i ", obracene_pole[i]);
    }
    return 0;
}
Editováno 15.11.2014 22:59
Nahoru Odpovědět 15.11.2014 22:54
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Odpovídá na Snorlax
Libor Šimo (libcosenior):

Snorlax, ty si vytvoril nové pole, ale ja si myslím, že požiadavka je otočiť to isté pole.
Možno takto nejak:

#include <stdio.h>
#define POCET 21

/** funkcia vymeni navzajom obsah pointerov **/
void vymen_obsah_pointerov(int *p_x, int *p_y)
{
        int pom;
        pom = *p_x;
        *p_x = *p_y;
        *p_y = pom;
}

/** funkcia otoci pole intov hore nohami **/
void otoc_pole(int pole[], int pocet_prvkov)
{
    int i, j;
    // obsah prveho pointeru sa vymeni za obsah posledneho a tak dalej
    for (i = 0, j = pocet_prvkov - 1; i < pocet_prvkov / 2; i++, j--) {
        vymen_obsah_pointerov(&pole[i], &pole[j]);
    }
}

int main()
{
    int i, pole[POCET];

    printf("Vytvorim pole o %d prvkoch a potom ho vypisem:\n", POCET);
    for(i = 0; i < POCET; i++)
        pole[i] = i + 1;

    for(i = 0; i < POCET; i++)
        printf(" %d,", pole[i]);

    printf("\n\nOtocim to iste pole a vypisem ho:\n");
    otoc_pole(pole, POCET);

    for (i = 0; i < POCET; i++)
        printf(" %d,", pole[i]);
    putchar('\n');

    return 0;
}
Nahoru Odpovědět 18.11.2014 14:39
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
tichjos
Člen
Avatar
tichjos:

Ahoj, neumí tady někdo v raptoru? Právě v něm začínám a nevím si rady s jednou úlohou. Za každý nápad budu rád. Díky moc
Zadání:

  1. uživatel zadá "limit" = 20
  2. generování pole od:do (2:limit)
  3. cyklus přes všechny nenulové prvky: škrtni v Pol: (poli,2 = 1)
  4. výpis
Editováno 26.11.2014 20:00
 
Nahoru Odpovědět 26.11.2014 19:59
Avatar
Odpovídá na tichjos
Libor Šimo (libcosenior):

Slovo "raptor" mi pripomína Jurský park. :-D
Ak je to nejaký jazyk, tak sorry, tu je sekcia pre c/c++.

Editováno 26.11.2014 20:05
Nahoru Odpovědět 26.11.2014 20:04
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Nahoru Odpovědět 26.11.2014 20:08
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.