[ Príspevkov: 6 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 02.06.13
Prihlásený: 07.06.16
Príspevky: 63
Témy: 18 | 18
NapísalOffline : 12.10.2014 0:28 | Tojuholnik v C * a -

Zdravim,
mam mensie trouble s podmienkov v mojom kode.
Spoiler: zobraziť
Kód:
#include <stdio.h>
int main()
{
   int N,i,j;
   scanf("%d",&N);
   if(N < 1 || N > 15 || N%2 == 0)
      printf("Zly vstup\n");

   else
   {
      for(i=0;i< 2 * N-1;i++)
      {   
         putchar('\n');
         for(j=0;j<N;j++)
         {   
            /*i+1
            2*N-i-1*/
            if(j <2*N-i-1)
            putchar('*');
         else
            putchar('-');
         }
      }
   }
   putchar('\n');
   return 0;
}

Spoiler: zobraziť
Kód:
./trojuholnik
5

*****
*****
*****
*****
*****
****-
***--
**---
*----

Spoiler: zobraziť
Kód:
#include <stdio.h>
int main()
{
   int N,i,j;
   scanf("%d",&N);
   if(N < 1 || N > 15 || N%2 == 0)
      printf("Zly vstup\n");

   else
   {
      for(i=0;i< 2 * N-1;i++)
      {   
         putchar('\n');
         for(j=0;j<N;j++)
         {   
            /*i+1
            2*N-i-1*/
            if(j < i+1)
            putchar('*');
         else
            putchar('-');
         }
      }
   }
   putchar('\n');
   return 0;
}

Spoiler: zobraziť
Kód:
./trojuholnik5

*----
**---
***--
****-
*****
*****
*****
*****
*****

obe polovice mam len neviem ako ich dat do 1 celku skusal som selico.
Finalne ma vyjst toto
Spoiler: zobraziť
Kód:
*----
**---
***--      
****-
*****
****-
***--
**---
*----

Dakujem za mozne navrhy napady.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0 | 0
NapísalOffline : 12.10.2014 1:55 | Tojuholnik v C * a -

Použi v tej podmienke and (&&). :)


Offline

Užívateľ
Užívateľ
Tojuholnik v C * a -

Registrovaný: 15.01.07
Prihlásený: 23.09.15
Príspevky: 186
Témy: 3 | 3
Bydlisko: ZV/BA
NapísalOffline : 12.10.2014 2:09 | Tojuholnik v C * a -

Kód:
#include <stdio.h>
int main()
{
   int N,i,j;
   scanf("%d",&N);
   if(N < 1 || N > 15 || N%2 == 0)
      printf("Zly vstup\n");

   else
   {
      for(i=0;i< 2 * N-1;i++)
      {   
         putchar('\n');
         for(j=0;j<N;j++)
         {   
            /*i+1
            2*N-i-1*/
            if( (j<i+1 && i<N) || (j<2*N-i-1 && i>=N))
            putchar('*');
         else
            putchar('-');
         }
      }
   }
   putchar('\n');
   return 0;
}


chcel som zanechat tvoj pristup, takze len upravenie ifu, proste pridanie kontroly, ze ked idem s riadkami po N, tak sa pyta na to i+1 a ked idem s i nad N, tak sa pyta na druhe


_________________
nb: Lenovo Thinkpad E520 (starsi pan uz), Fedora 20 / Win7 dualboot
" 1000.times { puts "I will not spam on the boards" } "
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 02.06.13
Prihlásený: 07.06.16
Príspevky: 63
Témy: 18 | 18
Napísal autor témyOffline : 12.10.2014 8:20 | Tojuholnik v C * a -

Vdaka aj za vysvetlenie ;)


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0 | 0
NapísalOffline : 12.10.2014 11:20 | Tojuholnik v C * a -

Stačilo spojiť tie tvoje dve kontroly a použiť && :)


Offline

Užívateľ
Užívateľ
Tojuholnik v C * a -

Registrovaný: 24.08.12
Prihlásený: 09.02.19
Príspevky: 59
Témy: 0 | 0
NapísalOffline : 12.10.2014 18:48 | Tojuholnik v C * a -

Vždycky je víc způsobů jak stáhnout kočku z kůže, a tisíc programátorů napíše stejný program tisíci různými způsoby. Tak zkus u každé úlohy zapřemýšlet jestli by se nedala udělat jinak:

Kód:
#include <stdio.h>



void trojuhelnik(int hvezd,int sloupcu)
     {
     int i=1,j;

     do {
        for (j=0;j<sloupcu;++j)
            putchar(j<hvezd?'*':'-');
        putchar('\n');
        if (i && hvezd<sloupcu)
           trojuhelnik(hvezd+1,sloupcu);
        } while (i-- && hvezd<sloupcu);
     }



int main(void)
    {
    int i,j,krok,vyska;

    /*******************************************
     * načtení a kontrola uživatelského vstupu *
     *******************************************/
    printf("Zadej počet sloupců: ");
    if (!scanf("%d",&vyska) || vyska<1 || vyska>15 || !(vyska&1))
       {
       printf("Chybné zadání!\n!");
       return 1;
       }

    /*****************************************************
     * varianta 1 - naivní řešení - dva cykly tam a zpět *
     *****************************************************/
    for (i=1;i<vyska;++i)
        {
        for (j=1;j<=vyska;++j)
            putchar(j<=i?'*':'-');
        putchar('\n');
        }
    for (;i;--i)
        {
        for (j=1;j<=vyska;++j)
            putchar(j<=i?'*':'-');
        putchar('\n');
        }
    putchar('\n');

    /***********************************************************
     * varianta 2 - to Pascal neudělá - cyklus se změnou kroku *
     ***********************************************************/
    for (krok=1,i=1;i;i+=krok)
        {
        for (j=1;j<=vyska;++j)
        putchar(j<=i?'*':'-');
        if (i==vyska)
           krok=-krok;
        putchar('\n');
        }
    putchar('\n');

    /******************************************************
     * varianta 3 - trocha programátorské magie - rekurze *
     ******************************************************/
    trojuhelnik(1,vyska);

    return 0;
    }



_________________
"Existuje pouze jeden člověk, který má méně přátel než Bill Gates, a tím je Saddám Husajn." (Paul Grayson)
 [ Príspevkov: 6 ] 


Tojuholnik v C * a -




© 2005 - 2025 PCforum, edited by JanoF