Programiranje u C-u - od svega pomalo izdvojena tema

poruka: 1.661
|
čitano: 331.633
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
7 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Pozdrav svima,

Napisati glavni program koji će pseudoslučajnim generatorom brojeva generirati 10 cjelobrojnih vrijednosti između „1“ i „10“, te ih pohraniti u prvo polje. Nakon toga je od korisnika potrebno zatražiti unos 10 cjelobrojnih vrijednosti koje moraju biti također između vrijednosti „1“ i „10“.Provjeru svake unesene vrijednosti je potrebno obaviti unutar funkcije„provjeriBroj“ koja se poziva iz glavnog programa i provjerava je li uneseni broj između brojeva „1“ i„10“. Ako nije, od korisnika je potrebno tražiti broj toliko dugo dok korisnik ne unese ispravnu vrijednost. Tek kad to bude tako, ispravnu vrijednost je potrebno vratiti iz funkcije „provjeriBroj“. Nakon što je korisnik unio ispravnu vrijednost,nju je potrebno dohvatiti kao izlazni parametar funkcije i zapisati je udrugo polje.
Napisati funkciju „usporediPolja“ koja prima oba polja i vraća  koliko  je  brojeva  korisnik  pogodio.  Osim samih vrijednosti, kod usporedbe se moraju poklapati i mjesta unutar polja. Tu funkciju potrebno je pozvati iz glavnog
programa,  a  vraćenu  vrijednost  potrebno  je  ispisati  na konzolu.Na kraju je još potrebno napisati funkciju „ispisPolja“ koja prima polje i njezine elemente ispisuje na konzolu. Tu funkciju je potrebno pozvati kod ispisa oba polja, kako bi se moglo provjeriti radi li program ispravno.


Evo moj kod sto sam uspio rijesiti :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define MAX 10

void provjeriBroj(int a){
    int x,i;
    int polje2[MAX];
    for(x=0;x<2;x++)
        {

    if(a<1||a>10){
        printf("Unjeli ste broj izvan granice\n");
        printf("Molim vas unesite ponovno broj : ");
        scanf("%d",&a);
    }
        }
        if(a>1||a<10)
        {
          for(i=0;i<2;i++)
          {
           polje2[i]=a;
          }
        }
}

void main()
{
    int a, i, br=0,s;
    int polje[MAX];
    srand((unsigned)time (NULL));
    for(i=0;i<MAX;i++){
        polje[i]=rand()%10+1;
         printf("%d",polje[i]);

    }

     for(i=0;i<MAX;i++)
        {
        printf("\nUnesite %d. broj ",i+1);
        scanf("%d",&a);
        provjeriBroj(a);
        }
return 0;

}

Primjer izvodenja programa:

Unesite brojeve:
Unesite 1. broj: 5
Unesite 2. broj: 5
Unesite 3. broj: 5
Unesite 4. broj: 5
Unesite 5. broj: 5
Unesite 6. broj: 5
Unesite 7. broj: 5
Unesite 8. broj: 5
Unesite 9. broj: 5
Unesite 10. broj: 5
Pogodili ste 2 brojeva!
Generirani brojevi: 6 1 5 1 5 1 10 4 7 4
Uneseni brojevi: 5 5 5 5 5 5 5 5 5 5


Naisao sam na problem pri izradi funkcije usporedbi dva polja.
Ako ima netko da mi pomogne rijesiti bio bi mu zahvalan.
Unaprijed hvala

Poruka je uređivana zadnji put čet 19.5.2016 20:54 (ivsim).
 
0 0 hvala 0
14 godina
offline
Re: Programiranje u C-u - od svega pomalo
ivsim kaže...

Pozdrav svima,

Napisati glavni program koji će pseudoslučajnim generatorom brojeva generirati 10 cjelobrojnih vrijednosti između „1“ i „10“, te ih pohraniti u prvo polje. Nakon toga je od korisnika potrebno zatražiti unos 10 cjelobrojnih vrijednosti koje moraju biti također između vrijednosti „1“ i „10“.Provjeru svake unesene vrijednosti je potrebno obaviti unutar funkcije„provjeriBroj“ koja se poziva iz glavnog programa i provjerava je li uneseni broj između brojeva „1“ i„10“. Ako nije, od korisnika je potrebno tražiti broj toliko dugo dok korisnik ne unese ispravnu vrijednost. Tek kad to bude tako, ispravnu vrijednost je potrebno vratiti iz funkcije „provjeriBroj“. Nakon što je korisnik unio ispravnu vrijednost,nju je potrebno dohvatiti kao izlazni parametar funkcije i zapisati je udrugo polje.
Napisati funkciju „usporediPolja“ koja prima oba polja i vraća  koliko  je  brojeva  korisnik  pogodio.  Osim samih vrijednosti, kod usporedbe se moraju poklapati i mjesta unutar polja. Tu funkciju potrebno je pozvati iz glavnog
programa,  a  vraćenu  vrijednost  potrebno  je  ispisati  na konzolu.Na kraju je još potrebno napisati funkciju „ispisPolja“ koja prima polje i njezine elemente ispisuje na konzolu. Tu funkciju je potrebno pozvati kod ispisa oba polja, kako bi se moglo provjeriti radi li program ispravno.


 

Evo primjer, s tim da su meni polja definirana prije svih funkcija, odmah poslije #include... "br" je brojač koji će se povećavati kada se poklapaju isti brojevi na istim mjestima.

#include...

int i, br = 0, rPolje[10], uPolje[10];

int usporediPolja()
{
   for(i = 0; i < 10; i++)
   { if(rPolje[i] == uPolje[i]){ br++; }
   } return br;
}

void main()

...

7 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
Kolega moze li cijeli primjer rjesenja ako nije problem jer mi uz ovaj dio koda ne radi.
Unaprijed hvala
14 godina
offline
Re: Programiranje u C-u - od svega pomalo
ivsim kaže...
Kolega moze li cijeli primjer rjesenja ako nije problem jer mi uz ovaj dio koda ne radi.
Unaprijed hvala

 Trebao bi to prilagodit u svoj kod, no poslao sam ti na PM ostatak pa vidi.

7 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Pozrav svima,

imam problem sa jednim kodom.Meni se čini da je sve okej,ali mi stalno izbacuje IndexOutOfRange.Možete li,molim Vas,samo bacit pogled pa ako tko skuži ,bio bi Vam stvarno zahvalan:)

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace zadatak_17._05
{
class Program
{
static void Main(string[] args)
{

double[,] polje = new double[19864, 2];//mmatrica još dva stupca
double c = 0;
// StreamReader citanje = new StreamReader("Koordinate.txt");//

StreamReader citanje = new StreamReader("Koordinate.txt");
for (int i = 0; i < 19864; i++)
{
string matrica = citanje.ReadLine();

string[] polje1 = matrica.Split(';');
polje[i, 0] = Convert.ToDouble(polje1[0]);
polje[i, 1] = Convert.ToDouble(polje1[1]);

 

 


}
c = IzracunUdaljenosti( polje);
Console.WriteLine(c);
Console.ReadKey();


}

 

public static double IzracunUdaljenosti( double[,] polje1)

{
double suma = 0;
double rezultat = 0;
for (int i = 1; i <polje1.Length-1; i++)

{
suma = suma + Math.Sqrt((Math.Pow(polje1[i, 0] - polje1[i - 1, 0], 2) + Math.Pow((polje1[i, 1] - polje1[i - 1, 1]), 2)));

//Console.WriteLine(suma);

}
rezultat= suma*111.32;
return rezultat;
}

 

 

}
}

Hvala svima:)

 
0 0 hvala 0
7 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Ovo je zadatak:)Hvala puno:))

Zadatak
Napišite program koji radi obradu podataka dobivenih sa GPS zapisivača. GPS zapisivač je uređaj koji prati kretanje vozila, te zapisuje podatke o trenutnom stanju vozila. Podaci o stanju vozila se zapisuje u razmaku od jedne sekunde.
U podaciF.txt nalazi se 19864 zapisa vožnje taksija vozila tijekom jednog dana koji sadrže očitanu 𝑥 koordinatu i 𝑦 koordinatu točke na kojoj se vozilo nalazi. Svaki zapis nalazi se u zasebnom retku u formatu: 𝑥 𝑘𝑜𝑜𝑟𝑑𝑖𝑛𝑎𝑡𝑎; 𝑦 𝑘𝑜𝑜𝑟𝑑𝑖𝑛𝑎𝑡𝑎
Npr. Ako u retku piše zapis 16.155298; 45.790950 to znači da je x koordinata 16.155298, a y koordinata 45.790950.
 Potrebno je napisati program koji učitava navedene podatke iz datoteke podaciF.txt u matricu. Pritom je potrebno koristiti ugrađenu metodu split nad tipom podatka string. Primjer poziva nad linijom "Ovo-je-primjer!", s crticom '-' kao znakom za dijeljenje linije:
U polje dijeloviLinije spremi se 3 string podatka (riječi), redom: ["Ovo", "je", "primjer!"].
 Potrebno je napisati metodu koja izračunava ukupan prijeđeni put taksi vozila u jednom danu. Metodu je potrebno nazvati izracunUdaljenosti koja kao argument prima učitanu matricu. Metoda vraća u glavnu metodu izračunati prijeđeni put vozila.
 Unutar glavne metode potrebno je pozvati metodu izracunUdaljenosti te ispisati prijeđeni put vozila u danu.
Napomena: Udaljenost između dvije točke računa se kao udaljenost između dvije točke u koordinatnom sustavu. Ukupan prijeđeni put potrebno je izračunati kao sumu udaljenosti između susjednih točaka. Dobivenu udaljenost u decimalnim stupnjevima potrebno je pretvoriti u kilometre. Za pretvorbu u ovom zadatku smatra se da je 1°≈111.32𝑘𝑚.
Primjer ispisa prikazan je na slici!
string linija = "Ovo-je-primjer!"; string[] dijeloviLinije = linija.Split('-');

 
0 0 hvala 0
9 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
miki1212 kaže...

Pozrav svima,

imam problem sa jednim kodom.Meni se čini da je sve okej,ali mi stalno izbacuje IndexOutOfRange.Možete li,molim Vas,samo bacit pogled pa ako tko skuži ,bio bi Vam stvarno zahvalan:)

 

... hrpa C# hoda ...

 

Posto jos donekle imam vjere u hrvatski skolski sustav, iskreno se nadam da si to slucajno u krivu grupu postao...

 

Ovo je odgovarajuca grupa za tvoje pitanje:

C#- Problemi i rješenja 

Poruka je uređivana zadnji put pet 20.5.2016 23:14 (DanijelX).
8 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

cao..

 

znači dodala sam charove u polje i sad bi ih trebala poredati po abecedi.... dali to moram raditi, znaci usporedivati jedan s drugim ?!

 
0 0 hvala 0
9 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

S obzirom da charovi sadrze brojcane vrijednosti iz ASCII tablice, a u ASCII tablici su slova poredana po abecednom redu...

 

( ovako to izgleda:)

 

Znakovi                 'B'   'O'   'K'

Vrijednosti u polju   | 066 | 079 | 075 |

 

... onda bi najjednostavnije bilo to polje sortirati po brojcanoj vrijednosti.

 

 

 

Jedini je problem sto su mala i velika slova odvojena i zasebno sortirana po abecednom redu:

 

Znakovi                 'B'   'O'   'k'
Vrijednosti u polju   | 066 | 079 | 107 |

 

 

Tako da ako su dozvoljena i mala i velika slova, onda je potrebno mrvicu lukavosti kod sortiranja...

 

 

ASCII tablica: https://en.wikipedia.org/wiki/ASCII#ASCII_printable_code_chart

Poruka je uređivana zadnji put ned 29.5.2016 21:10 (DanijelX).
Moj PC  
0 0 hvala 1
14 godina
offline
Programiranje u C-u - od svega pomalo

Molim preporuku nekog videa ili tekst-a o dokumentiranju koda, znači kako najbolje i pravilno napraviti da mogu ja i ostali to kasnije čim lakše i bolje pročitati.

Poruka je uređivana zadnji put sub 18.6.2016 16:40 (null).
Moj PC  
0 0 hvala 0
10 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
null kaže...

Molim preporuku nekog videa ili tekst-a o dokumentiranju koda, znači kako najbolje i pravilno napraviti da mogu ja i ostali to kasnije čim lakše i bolje pročitati.

 Pa sad, sve što rade "Indijanci" - čitaj Indijci - radi suprotno...

11 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
null kaže...

Molim preporuku nekog videa ili tekst-a o dokumentiranju koda, znači kako najbolje i pravilno napraviti da mogu ja i ostali to kasnije čim lakše i bolje pročitati.

 Jedan kratki video gdje je sažeto ono osnovno..

 

 

Smrt u penziji
11 godina
offline
Re: Programiranje u C-u - od svega pomalo
null kaže...

Molim preporuku nekog videa ili tekst-a o dokumentiranju koda, znači kako najbolje i pravilno napraviti da mogu ja i ostali to kasnije čim lakše i bolje pročitati.

 

http://www.stack.nl/~dimitri/doxygen/index.html

http://fnch.users.sourceforge.net/doxygen_c.html

11 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

@Dino-san

 

int main() {

int broj, i, suma = 0, produkt = 1, pom;
char znak;

printf("Unesite broj: ");
scanf("%d", &broj);

printf("Unesite zeljenu akciju: \n\t znak + za zbrajanje \n\t znak * za mnozenje: \n\t");
scanf(" %c", &znak);

if (znak == '+'){
for (i = 0; i<broj+1; i++){
suma = suma + i;
}
printf("Suma je: %d", suma);
}
else if (znak == '*'){
for (i = 1; i<broj+1; i++){
produkt = produkt * i;
}
printf("produkt je: %d", produkt);
}
return 0;
}

Smrt u penziji
 
1 0 hvala 1
8 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Pozdrav,

jel zna kako rijesiti ovaj zadatak

 

Write a program that prints the next 20 leap years.

Carry on
 
0 0 hvala 0
11 godina
offline
Re: Programiranje u C-u - od svega pomalo
Dino-san kaže...

Pozdrav,

jel zna kako rijesiti ovaj zadatak

 

Write a program that prints the next 20 leap years.

 

Primjer algoritma za određivanje prijestupne godine:

https://www.rosettacode.org/wiki/Leap_year#C

 

A dalje je stvarno jednostavno...

7 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Pozdrav tek sam počeo programirati u C-u. Kupio sam jednu knjigu za početnike i evo jedno malog programa iz te knjige.

__________________________________________________________________________

// Example program #1 from Chapter 6 of
// Absolute Beginner's Guide to C, 3rd Edition
// file Chapter6ex1.c

 

// This program pairs three kids with their favorite superhero

 

#include <stdio.h>
#include <string.h>

 

main()
{
     char Kid1[12];
     // Kid1 can hold an 11-character name
     // Kid2 will be 7 characters (Maddie plus null 0)
     char Kid2[] = "Maddie";
     //Kid3 is also 7 characters, but specifically defined
     char Kid3[7] = "Andrew";
     // Hero1 will be 7 characters (adding null 0!)
     char Hero1 = "Batman";
     //Hero2 will have extra room just in case
     char Hero2[34] = "Spiderman";
     char Hero3[25];

  

        Kid1[0] = 'K'; //Kid1 is being defined character-by-character
        Kid1[1] = 'a'; //Not efficient, but it does work
        Kid1[2] = 't';
        Kid1[3] = 'i';
        Kid1[4] = 'e';
        Kid1[5] = '\0'; // Never forget the null 0 so C know when the
                     // strings end

 

        strcpy(Hero3, "The Incredible Hulk");

 

        printf("%s\'s favorite hero is %s.\n", Kid1, Hero1);
        printf("%s\'s favorite hero is %s.\n", Kid2, Hero2);
        printf("%s\'s favorite hero is %s.\n", Kid3, Hero3);

 

        return 0;

 

}

______________________________________________________________

 

Problem je u tome što kad stisnem build and run gumb dođe do nekakve greške koja izgleda ovako

 Koristim code::block compiler i windows 7 ultimate. Probao sam guglat taj problem ali ni ovo 
nije pomoglo.

Poruka je uređivana zadnji put čet 4.8.2016 17:06 (general_šu).
 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Greška je u:

 

char Hero1 = "Batman";

 

ispravno je

 

char Hero1[] = "Batman";

7 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

#include <stdio.h>
#include <string.h>

 

main()

 

{
    int broj_snita, dan, mjesec, godina;
    float cijena_pice;
    char vrsta_pice[24];

 

    printf("Koliko kosta pizza u tvom kvartu?\n");
    scanf(" $%.2f", &cijena_pice);

 

    printf("Koja ti je najdraza pica?\n");
    scanf(" %s", vrsta_pice);

 

    printf("Koliko komada pice mozes pojest?\n");
    scanf(" %d", &broj_snita);

 

    printf("Koji je danas datum?\n");
    scanf(" %d/%d/%d", &dan, &mjesec, &godina);

 


    printf("\n\n\nZasto nebi otisao na picu %d/%d/%d i pojeo %d komada pice koja se zove %s.", dan, mjesec, godina, broj_snita, vrsta_pice);
    printf("\nispast ce ta samo $%.2f", cijena_pice);

 

    return 0;
}

 

Kad stisnem gumb run&compile prvo me normalno pita koliko kosta pica i onda upisem neki broj i stisnem enter. Nakon toga ocekujem da me pita koja mi je najdraza pica, ali me umjesto toga pita odjednom i koja mi je najdraza pica i koliko mogu pojest. Trebalo bi me pojedinacno za svaki printf pitat, ali nije tako. Ako moze neko malo pronjuskat po ovome gore kodu. Neznam di sam pogrijeso.

Poruka je uređivana zadnji put ned 14.8.2016 1:38 (general_šu).
7 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Bump!

 
0 0 hvala 0
15 godina
offline
Re: Programiranje u C-u - od svega pomalo

 printf("Koliko kosta pizza u tvom kvartu?\n");
 scanf(" $%.2f", &cijena_pice);

nisam ekspert ili neki znalac pa i mene nesto zanima, cemu ovaj "$"?

a sto se tice tvog problema stavi samo "%f" umjesto tog "$%.2f" i izbacit ce ti normalno.

koliko ja znam "%.2f" je da u rezultatu zaokruži na dvije decimale, a nema funkciju prilikom unosa.

 

EDIT: pretpostavljam da si sa tim "$" htio da ispiše ispred unesenog broja znak $, to onda moraš u printf iza \n napisati taj $

Poruka je uređivana zadnji put ned 14.8.2016 14:18 (s0me0ne).
8 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Pozdrav ljudi,koristim knjigu za ucenje C jezika i naisao sam na problem.Jel mi mozete pomoci sto sam krivo napisao da mi generira slucajnibroj u do-while petlji.U knjizi pise identiticno kao i tu ali mi izbaci samo jedan broj i to je to.Koristim code-block za kompajlanje.

 

 

 

 

 

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define RASPON 50
#define KUGLICE 7
#define PAUZA 1000000



int slucajnibroj(int raspon);
void sidro(void);



////////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    int brojevi[KUGLICE];        //polje koje pamti izvucene brojeve
    int i,b;
    char c;


sidro();

/*osnovne poruke */

printf("PROGRAM ZA IZVLACENJE BROJEVA LOTA \n \n");
        //generator slucajnih brojeva

/*inicijaliziram polja dodjeljivanjem svakom elementu 0.Jos dosada nije ni jedna kuglica nije izvucena*/
printf("za izvlacenje brojeva ovog kola stisnite tipku Enter;");
c=getchar();

/*izvlacenje kuglica*/
printf("evo ih,stizu:");


for(i=0;i<KUGLICE;i++)       //inicijaliziranje polja
{
    brojevi[i]=0;

}
/*petlja do while bira slucajni broj i dio while petlje provjerava je li na toj poziciji vec upisana znamenka 1*/

////////////////////////////////////////////////////////////////////////////////////////////////////

do
{
    b=slucajnibroj(RASPON);
}
while(brojevi[b]);
brojevi[b]=1;
printf("%i ",b+1);

printf("\n\nzelimo vam srecu u izvlacenju \n");

return(0);
}






///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*generiranje slucajnog broja */

int slucajnibroj(int raspon)
{
    int s;
    s=rand()%raspon;
    return(s);
}



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void sidro(void)
{
    srand((unsigned)time(NULL));
}

Carry on
 
0 0 hvala 0
14 godina
offline
Programiranje u C-u - od svega pomalo

@Dino-san

nemas postavljen nikakav uvjet ( veće, manje, jednako ili slično) u while petlji

Poruka je uređivana zadnji put pon 15.8.2016 11:24 (null).
Moj PC  
1 0 hvala 0
8 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

da u tome i je problem sto ne razumijem sto staviti za uvjet da se unesu brojevi u polje do 7 tj.KUGLICE i da se ispisu brojevi.

 

ovo

brojevi[b]=1;

printf("%i ",b+1)

to mi nije jasno

Carry on
11 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
Dino-san kaže...

da u tome i je problem sto ne razumijem sto staviti za uvjet da se unesu brojevi u polje do 7 tj.KUGLICE i da se ispisu brojevi.

 

ovo

brojevi[b]=1;

printf("%i ",b+1)

to mi nije jasno

 Moraš prvo razumjeti što je polje..

Polje je niz uzastopnih memorijskih lokacija koje služe za pohranu istog tipa podataka.

int polje[10];

 

//int -> tip podataka spremljenih u polje

//polje -> naziv varijable

//[10] -> unutar uglatih zagrada se navodi broj elemenata polja

 

//dakle "int polje[10]" je polje deklarirano za pohranu 10 cijelih brojeva.

 

//elementima polja se pristupa pomoću indeksa koji se navode u uglatim zagradama.

//indeks je redni broj podatka u polju, a indeksi kreću od 0

 

    polje[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

indeks_polja[0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

 

//kako pristupiti elementu u polju?

 

//pokažimo na primjeru.. ispisat ćemo prvi element polja.

 

printf("%d", polje[0]); // ovime se ispisuje vrijednost koja je zapisana na prvom mjestu u polju.

 

// kako unijeti vrijednosti u naše polje pomoću petlje..

 

int polje[10], i; //deklaracija polja

 

for (i=0; i < 10; ++i){ //for petlja za unos elemenata u poklje

   printf("Unesi %d. element polja: ", i+1);

   scanf("%d" &polje[i]);

   }

 

Ovo što si ti napisao "brojevi[b]=1"

u prijevodu znači da vrijednost u polju "brojevi" na indeksu "b" jednaka 1..

 

Koliko vidim ne razmiješ osnovne stvari kao što su funkcioniranje petlji a već si krenu sa deklaracijaom macroa..

 

Ovo što sam ti napisao su samo osnove osnova polja.

Moj ti je savjet da se vratiš na početak učenja i prvo shvatiš petlje jer ako njih ne razumiješ ništa ti dalje nema smisla učiti.

 

 

 

Smrt u penziji
Poruka je uređivana zadnji put sri 17.8.2016 10:02 (geothia).
8 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
geothia kaže...
Dino-san kaže...

da u tome i je problem sto ne razumijem sto staviti za uvjet da se unesu brojevi u polje do 7 tj.KUGLICE i da se ispisu brojevi.

 

ovo

brojevi[b]=1;

printf("%i ",b+1)

to mi nije jasno

 Moraš prvo razumjeti što je polje..

Polje je niz uzastopnih memorijskih lokacija koje služe za pohranu istog tipa podataka.

int polje[10];

 

//int -> tip podataka spremljenih u polje

//polje -> naziv varijable

//[10] -> unutar uglatih zagrada se navodi broj elemenata polja

 

//dakle "int polje[10]" je polje deklarirano za pohranu 10 cijelih brojeva.

 

//elementima polja se pristupa pomoću indeksa koji se navode u uglatim zagradama.

//indeks je redni broj podatka u polju, a indeksi kreću od 0

 

    polje[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

indeks_polja[0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

 

//kako pristupiti elementu u polju?

 

//pokažimo na primjeru.. ispisat ćemo prvi element polja.

 

printf("%d", polje[0]); // ovime se ispisuje vrijednost koja je zapisana na prvom mjestu u polju.

 

// kako unijeti vrijednosti u naše polje pomoću petlje..

 

int polje[10], i; //deklaracija polja

 

for (i=0; i < 10; ++i){ //for petlja za unos elemenata u poklje

   printf("Unesi %d. element polja: ", i+1);

   scanf("%d" &polje[i]);

   }

 

Ovo što si ti napisao "brojevi[b]=1"

u prijevodu znači da vrijednost u polju "brojevi" na indeksu "b" jednaka 1..

 

Koliko vidim ne razmiješ osnovne stvari kao što su funkcioniranje petlji a već si krenu sa deklaracijaom macroa..

 

Ovo što sam ti napisao su samo osnove osnova polja.

Moj ti je savjet da se vratiš na početak učenja i prvo shvatiš petlje jer ako njih ne razumiješ ništa ti dalje nema smisla učiti.

 

 

 

 Hvala na odgovoru.Koristim knjigu i ovo tocno u knjizi pise koja se zove 'C za neznalice' od Dana Gookina.Polja sam prokuzio ali sve u svemu imam probleme s while petljama koje su mi nejasne u toj knjizi tako da cu detaljno proucavati.

Carry on
7 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

# include <stdio .h>
# define MAX 81


int main ( int argc , char * argv []) {
char line [ MAX], *c;
FILE *input , * output ;


if (( input = fopen (" input . txt ", "r")) == NULL ) {
printf (" File %s could not be open .\n", argv [1]) ;
return -1;
}


if (( output = fopen (" output . txt ", "w")) == NULL ) {
printf (" File %s could not be open \n", argv [2]) ;
return -1;
}


while (( fgets (line , MAX , input )) != NULL ) {
int count = strlen ( line );
fprintf ( output , "%d %s", count , line );
}


fclose ( input );

fclose ( output );
return 0;
}

 

Program treba da procita svaku liniju teksta sa input datoteke, i da u output datoteku u svaki red doda broj karakteri u isti taj red.

Debagirano i nece da ugje u while petlju?! A mislim da je sve u redu?!

 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
koda5 kaže...

# include <stdio .h>
# define MAX 81


int main ( int argc , char * argv []) {
char line [ MAX], *c;
FILE *input , * output ;


if (( input = fopen (" input . txt ", "r")) == NULL ) {
printf (" File %s could not be open .\n", argv [1]) ;
return -1;
}


if (( output = fopen (" output . txt ", "w")) == NULL ) {
printf (" File %s could not be open \n", argv [2]) ;
return -1;
}


while (( fgets (line , MAX , input )) != NULL ) {
int count = strlen ( line );
fprintf ( output , "%d %s", count , line );
}


fclose ( input );

fclose ( output );
return 0;
}

 

Program treba da procita svaku liniju teksta sa input datoteke, i da u output datoteku u svaki red doda broj karakteri u isti taj red.

Debagirano i nece da ugje u while petlju?! A mislim da je sve u redu?!

 funkcija "strlen" se nalazi opisana u header datoteci string.h.. stoga bi trebao i nju uključiti u zaglavlje programa..

 

i još jedna stvar.. deklaracija varijabli u C.u je obavezna prije izvršavanja prve naredbe u programu.. a koliko vidim ti si varijablu "count" deklarirao tek unutar petlje..

Smrt u penziji
15 godina
offline
Re: Programiranje u C-u - od svega pomalo
koda5 kaže...

if (( input = fopen (" input . txt ", "r")) == NULL ) {
printf (" File %s could not be open .\n", argv [1]) ;
return -1;
}


if (( output = fopen (" output . txt ", "w")) == NULL ) {
printf (" File %s could not be open \n", argv [2]) ;
return -1;
}

 

}

 

Program treba da procita svaku liniju teksta sa input datoteke, i da u output datoteku u svaki red doda broj karakteri u isti taj red.

Debagirano i nece da ugje u while petlju?! A mislim da je sve u redu?!

nakon inkludanja onoga sto je kolega rekao (string.h) program mi radi, ALI NAPOMENA: program izbacuje gresku da nije mogao otvorit file koji mu je zadan preko terminala dok zapravo pokusava otvoriti file " input. txt"; takodjer ne znam jesu li ovi razmaci zbog kopiranja koda na bug forumu, ali svakako ih se rijesi; ista stvar ti je i sa outputom 

edit: ako zelis da ti imena file-ova ucitava iz komandne linije, onda kod treba izgledat otprilike ovako; evo i slikica u prilogu da se vidi kako sve radi :)

edit2: skonto sam da sam prekopirao krivi kod, pa evo popravljeno

#include <stdio.h>
#include <string.h>
#define MAX 81

int main(int argc , char * argv []) {
char line[MAX], *c;
FILE *input , *output ;

if (( input = fopen(argv[1], "r")) == NULL ) {
printf (" File %s could not be open .\n", argv [1]) ;
return -1;
}

if (( output = fopen(argv[2], "w")) == NULL ) {
printf (" File %s could not be open \n", argv [2]) ;
return -1;
}

while (( fgets (line , MAX , input )) != NULL ) {
int count = strlen ( line );
fprintf ( output , "%d %s", count , line );
}

fclose ( input );
fclose ( output );
return 0;
}

geothia kaže...

 

i još jedna stvar.. deklaracija varijabli u C.u je obavezna prije izvršavanja prve naredbe u programu.. a koliko vidim ti si varijablu "count" deklarirao tek unutar petlje..

 ne bih rekao da je obavezna, vise je pravilo programera C-a, ali on deklarira unutar bloka (unutar {}) koji je u ovom slucaju dio petlje sto znaci da se ta varijabla vidi samo u petlji sto znaci da program "brise" tu varijablu iz memorije prije nego program zavrsi i "optimiziraniji" je, istina, to je za ovako kratak program potpuno nebitno

Poruka je uređivana zadnji put sub 27.8.2016 10:31 (ShadoW).
7 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Dodao string.h, mesto deklaracije varijabli ne menja nista, cudno je sto uslov u while mislim da je OK, a kada pri debagiranje dogjem do while petlje, tu samo preskoci i produzi dalje?!

Nova poruka
E-mail:
Lozinka:
 
vrh stranice