Škôlka jazyka C

Fórum o programovaní v jazyku C založené 3. januára 2012

Aktuálny čas je 20 Apr 2024, 00:17

Všetky časy sú v GMT + 1 hodina




Vytvoriť novú tému Odpovedať na tému  [ Príspevkov: 9 ] 
Autor Správa
 Predmet príspevku: POLIA:"Porovnanie znakov v poli"
PoslaťNapísal: 03 Mar 2015, 12:56 
Offline
Škôlkár
Škôlkár

Registrovaný: 23 Feb 2015, 14:06
Príspevky: 4
Udelené body: 1 udelenie bodov
Získané body: 0 udelenie bodov
Citácia:
vytvorte program ktory nacita do pola postupnost prvkov a urci vztah medzi nimi <,>,=


Neviem ci robim nieco zasadne zle, po nacitanie 2. znaku v poradi, aby teda na mieste pole[0] a mieste pole[1] uz bol nejaky znak a bolo co porovnavat sa mi to zda byt v poriadku... avsak potom pride problem ...
while i>0 , sa zda ze cykluje stale dokola ... a tlaci jednu z alternatv ale ... neviem preco neprejde cez podmienku nevytlaci ich, neprejde na printf: zadaj dalsi prvok z pola a necaka na nacitanie dalsiho ktory by porovnalo s tym na predoslej pozicii ...


Kód:
#include<conio.h>
#include<stdio.h>
int main(){
   int i=0,r=0;
   printf("vytvorte program ktory nacita do pola postupnost prvkov a urci vztah medzi nimi <,>,= ");
   scanf("%d",&r);
   int pole[r];
   for(i=0;i<r;i++){
      
      printf("\n  Zadaj %d. prvok:",1+i);
      scanf("%d",&pole[i]);
      while(i>0){

           if((pole[i])<(pole[i-1])){
         
            printf("prvok %d  JE MENSI ako prvok %d",pole[i],pole[i-1]);}
          else if((pole[i])>(pole[i-1])){
         
            printf("prvok %d  JE MENSI ako prvok %d",pole[i],pole[i-1]);}
                                                       
          else if((pole[i])==(pole[i-1])){
         
            printf ("prvok %d  SA ROVNA  prvku %d",pole[i],pole[i-1]);}}
      
   }
   getchar();
   return 0;
   
}


Detaily príspevku Upozorniť užívateľa
Hore
 Profil  
 
PoslaťNapísal: 04 Mar 2015, 07:33 
Offline
Stredoškolák
Stredoškolák
Obrázok užívateľa

Registrovaný: 06 Jan 2012, 19:26
Príspevky: 458
Bydlisko: pod Pátrovom
Udelené body: 228 bodov
Získané body: 21 bodov
Pozri sa na toto:
Kód:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    int i, pocet;

    srand(time(0));
    printf("vytvorte program ktory nacita do pola postupnost prvkov a urci vztah medzi nimi <,>,= \n"
           "Zadajte pocet cisiel v poli: ");
    scanf("%d", &pocet);
    int pole[pocet];
    for(i = 0; i < pocet; i++) {
        pole[i] = rand()%100 + 1; // generuje nahodne cisla rozsah 1 až 100
    }
    i = 0;
    while (i < pocet - 1) {
        if((pole[i]) < (pole[i + 1]))
            printf("prvok %2d  JE MENSI ako prvok %2d\n",pole[i], pole[i + 1]);
        else if((pole[i]) > (pole[i + 1]))
            printf("prvok %2d  JE VACSI ako prvok %2d\n", pole[i], pole[i + 1]);
        else
            printf ("prvok %2d SA ROVNA prvku %2d\n", pole[i], pole[i + 1]);
        i++;
    }
    /*
    while(i > 0)
        if((pole[i]) < (pole[i - 1])) {
            printf("prvok %d  JE MENSI ako prvok %d",pole[i],pole[i-1]);
        }
        else if((pole[i]) > (pole[i - 1])) {
            printf("prvok %d  JE MENSI ako prvok %d", pole[i], pole[i-1]);
        }
        else if((pole[i]) == (pole[i - 1])) {
            printf ("prvok %d SA ROVNA prvku %d", pole[i], pole[i-1]);
        }
    }
    */
    getchar();

    return 0;
}

A všimni si prosím aj formát môjho kódu, nezdá sa ti to krajšie a prehľadnejšie?

_________________
kódy píšem na platforme: linux Ubuntu 12.04 (Geany, Code::Blocks), WinXP (Code::Blocks, PsPad editor),
Skype: libcokamo, ICQ: 56312279
Ak treba, napíš mi na libcosenior@gmail.com. To mám v mobile a stále po ruke.


Detaily príspevku Upozorniť užívateľa
Hore
 Profil  
 
PoslaťNapísal: 04 Mar 2015, 13:46 
Offline
Škôlkár
Škôlkár

Registrovaný: 23 Feb 2015, 14:06
Príspevky: 4
Udelené body: 1 udelenie bodov
Získané body: 0 udelenie bodov
Neviem ani nie, kedze kod mam v DevC++ trochu inac usporiadany a su tam aj zvyraznenia ...

Dobre a pokial chcem cisla zadavat rucne, neviem nepoznam ziaden rand ani srand , a nevyuzivam time.h ... co v takomto pripade ...

preco sa potom ten kod sprava tak ako sa sprava ? Co je v nom zasadne zle? Ak si ho mal otvoreny ,lebo nechcel som iny kod, iba som sa pytal co treba prerobit v starom, rsp. kde je chyba alebo co je zle... Takymto sposobom to nema vyznam ze niekto mi na chybny kod odpise svojim kodom ... lebo je to v principe nieco uplne ine ... a to ze uvidim pre danu vec napisany iny kod /spravne alternativne riesenie/ mi poradi tak nic do buducna, lebo mozem tie chyby robit znova a nemusim si ich uvedomit kde boli...


Detaily príspevku Upozorniť užívateľa
Hore
 Profil  
 
PoslaťNapísal: 04 Mar 2015, 14:04 
Offline
Stredoškolák
Stredoškolák
Obrázok užívateľa

Registrovaný: 06 Jan 2012, 19:26
Príspevky: 458
Bydlisko: pod Pátrovom
Udelené body: 228 bodov
Získané body: 21 bodov
Kód:
#include<conio.h>
#include<stdio.h>
int main(){
   int i=0,r=0;
   printf("vytvorte program ktory nacita do pola postupnost prvkov a urci vztah medzi nimi <,>,= ");
   scanf("%d",&r);
   int pole[r];
   //for(i=0;i<r;i++){
   for(i=1;i<=r;i++){
      //printf("\n  Zadaj %d. prvok:",1+i);
      printf("\n  Zadaj %d. prvok:",i);
      scanf("%d",&pole[i]);
      if (i % 2 == 0){
           if((pole[i])<(pole[i-1])){
            printf("prvok %d  JE MENSI ako prvok %d",pole[i],pole[i-1]);}
          else if((pole[i])>(pole[i-1])){
            printf("prvok %d  JE VACSI ako prvok %d",pole[i],pole[i-1]);}
          else if((pole[i])==(pole[i-1])){
            printf ("prvok %d  SA ROVNA  prvku %d",pole[i],pole[i-1]);}}
   }
   getchar();
   return 0;
}

_________________
kódy píšem na platforme: linux Ubuntu 12.04 (Geany, Code::Blocks), WinXP (Code::Blocks, PsPad editor),
Skype: libcokamo, ICQ: 56312279
Ak treba, napíš mi na libcosenior@gmail.com. To mám v mobile a stále po ruke.


Detaily príspevku Upozorniť užívateľa
Hore
 Profil  
 
PoslaťNapísal: 04 Mar 2015, 14:48 
Offline
Škôlkár
Škôlkár

Registrovaný: 23 Feb 2015, 14:06
Príspevky: 4
Udelené body: 1 udelenie bodov
Získané body: 0 udelenie bodov
Ok , modulo delenie a zmena if sposobilo ze sa porovnava
1a 2
3 a 4
5 a 6 ... a tak dalej a tak dalej

Co v pripade ze chcem tymto spospbom porovnat
1 a 2
2 a 3
3 a 4
4 a 5 vzdy o jednu poziciu dozadu ... ? Cize to nebude splnat podmienku if ...
mal som tam to while ale to mi nefungovalo, stale pouzivalo printf a vypisovalo to z nejakeho dovodu dokola ... preco ?

EDIT ... lebo ked odstranim tuto podmienku, tak ok len mi vypise prvok 1 ako nahodne cislo na mieste 0 ktore som nezadal ...
EDIT2: a ja som potreboval iba aby to o jedno "kolo" preskocilo ignorovalo to vypisovanie ... a to mi nefungovalo v tom bol pociatocny problem ze pokial sa I nerovna viac ako 1 aby jednoducho cakalo na dalsie cislo


Naposledy upravil ghost0007 dňa 04 Mar 2015, 14:52, celkovo upravené 1

Detaily príspevku Upozorniť užívateľa
Hore
 Profil  
 
PoslaťNapísal: 04 Mar 2015, 14:51 
Offline
Stredoškolák
Stredoškolák
Obrázok užívateľa

Registrovaný: 06 Jan 2012, 19:26
Príspevky: 458
Bydlisko: pod Pátrovom
Udelené body: 228 bodov
Získané body: 21 bodov
Pretože si mal neukončený cyklus.

_________________
kódy píšem na platforme: linux Ubuntu 12.04 (Geany, Code::Blocks), WinXP (Code::Blocks, PsPad editor),
Skype: libcokamo, ICQ: 56312279
Ak treba, napíš mi na libcosenior@gmail.com. To mám v mobile a stále po ruke.


Detaily príspevku Upozorniť užívateľa
Hore
 Profil  
 
PoslaťNapísal: 04 Mar 2015, 14:53 
Offline
Stredoškolák
Stredoškolák
Obrázok užívateľa

Registrovaný: 06 Jan 2012, 19:26
Príspevky: 458
Bydlisko: pod Pátrovom
Udelené body: 228 bodov
Získané body: 21 bodov
A pokiaľ to chceš, ako si písal, najskôr musíš naplniť pole číslami a potom ho cez cyklus porovnávať. Tak je to urobené v mojom kóde v druhom príspevku.

_________________
kódy píšem na platforme: linux Ubuntu 12.04 (Geany, Code::Blocks), WinXP (Code::Blocks, PsPad editor),
Skype: libcokamo, ICQ: 56312279
Ak treba, napíš mi na libcosenior@gmail.com. To mám v mobile a stále po ruke.


Detaily príspevku Upozorniť užívateľa
Hore
 Profil  
 
PoslaťNapísal: 04 Mar 2015, 14:57 
Offline
Stredoškolák
Stredoškolák
Obrázok užívateľa

Registrovaný: 06 Jan 2012, 19:26
Príspevky: 458
Bydlisko: pod Pátrovom
Udelené body: 228 bodov
Získané body: 21 bodov
Poprípade riadok:
if (i % 2 == 0){
nahraď týmto:
if (i > 1){

_________________
kódy píšem na platforme: linux Ubuntu 12.04 (Geany, Code::Blocks), WinXP (Code::Blocks, PsPad editor),
Skype: libcokamo, ICQ: 56312279
Ak treba, napíš mi na libcosenior@gmail.com. To mám v mobile a stále po ruke.


Detaily príspevku Upozorniť užívateľa
Hore
 Profil  
 
PoslaťNapísal: 04 Mar 2015, 14:59 
Offline
Škôlkár
Škôlkár

Registrovaný: 23 Feb 2015, 14:06
Príspevky: 4
Udelené body: 1 udelenie bodov
Získané body: 0 udelenie bodov
Moja chyba uz to mam ... While stacilo nahradit za IF a uz to funguje ...
edit: dik za odpoved akurat som na to prisiel, ja neviem preco ma to skor nenapadlo , uplne taka chyba ze ...


Detaily príspevku Upozorniť užívateľa
Hore
 Profil  
 
Zobraziť príspevky z predchádzajúceho:  Zoradiť podľa  
Vytvoriť novú tému Odpovedať na tému  [ Príspevkov: 9 ] 

Všetky časy sú v GMT + 1 hodina


Kto je on-line

Užívatelia prezerajúci fórum: Žiadny registrovaný užívateľ nie je prítomný a 3 hostia


Rýchla úprava:
Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre
Nemôžete zasielať súbory v tomto fóre

Hľadať:
Skočiť na:  
cron
Powered by phpBB® Forum Software © phpBB Group

Hosted by FreeSpace SK