Forum » Programiranje » [C] Množenje argumentov
[C] Množenje argumentov
minghags ::
Rabil bi pomoč, in sicer, ne gre mi v glavo, zakaj mi noče izpisovat izven zanke rezultata, in zakaj mi vedno ko izpišem napiše Segmentation Failed.
Koda:
Koda:
#include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]){ int i, zmnozek; zmnozek=atoi(argv[1]); for(i=1; i<argc; i++) { // zmnozek=atoi(argv[1]); // zmnozek*=atoi(argv[i]); zmnozek=zmnozek*atoi(argv[i+1]); printf("Rezultat: %d\n",zmnozek); }; // printf("Rezultat: %d\n",zmnozek); return 0; }
gendale ::
ti maš zanko tko:
pol pa v tej zanki nardiš to:
to ni kul, ker v zadnjem obhodu probas dostopat do argv[argc]
zato dobis segmentation fault
rezultata izven zanke ti pa ne napiše, ker se že prej sesuje
for(i=1; i<argc; i++)
pol pa v tej zanki nardiš to:
zmnozek=zmnozek*atoi(argv[i+1]);
to ni kul, ker v zadnjem obhodu probas dostopat do argv[argc]
zato dobis segmentation fault
rezultata izven zanke ti pa ne napiše, ker se že prej sesuje
seznam zanč moderatorjev in razlogov da so zanč
http://pastebin.com/QiWny5dV
gor je mavrik apple uporabniček (mali možgani in mali penis)
http://pastebin.com/QiWny5dV
gor je mavrik apple uporabniček (mali možgani in mali penis)
gendale ::
for bo tud ok, samo mal spremeni pogoj
seznam zanč moderatorjev in razlogov da so zanč
http://pastebin.com/QiWny5dV
gor je mavrik apple uporabniček (mali možgani in mali penis)
http://pastebin.com/QiWny5dV
gor je mavrik apple uporabniček (mali možgani in mali penis)
smoke ::
zmnozek inicializiraj na 1 in pol v zanki, zmnozek *= atoi(argv[i]);
Zgodovina sprememb…
- spremenil: smoke ()
Mesar ::
zmnozek=200;
zmnozek=zmnozek*atoi(argv[i+1])*zmnozek*atoi(argv[i+1])*0.2;
bi moralo delat.
zmnozek=zmnozek*atoi(argv[i+1])*zmnozek*atoi(argv[i+1])*0.2;
bi moralo delat.
Your turn to burn!
minghags ::
Sem porihtal, sem naredil po nasvetu smoke-a. Hvala vsem. Zdaj pa samo še ena stvar, zakaj pri bogu ko hočem pomnožiti 8 in -2 izpiše:
root@ckyserver:/home/cky# ./izracunaj 8 -2 Rezultat: -128
smoke ::
Nevem sicer kak si napisal, ampak tole načeloma deluje:
koda:
output:
koda:
#include <stdio.h> int main(int argc, char** argv) { int i, zmnozek; zmnozek = 1; for (i = 1 ; i < argc ; ++i) { zmnozek *= atoi(argv[i]); } printf("rezultat: %d\n", zmnozek); return 0; }
output:
[smoke@alydar sttest]$ ./sttest 8 -2 rezultat: -16
_Enterprise_ ::
bom ponucal to temo:
zakaj najprej pravilno izpiše, v funkciji pa ne več? če so namest charov inti, dela v redu.
#include <stdio.h> #include <stdlib.h> int main() { char *seznam=malloc(10*sizeof(char)); int i; for (i=0; i<10; i++) { seznam[i]='a'; } for (i=0; i<10; i++) { printf("\n%c",seznam[i]); } printf("\n\n"); prt(seznam, 10); return 0; } void prt(int *seznam, int len) { int i; for (i=0; i<len; i++) { printf("\n%c",seznam[i]); } }
zakaj najprej pravilno izpiše, v funkciji pa ne več? če so namest charov inti, dela v redu.
smoke ::
Spremeni int* v char*, glede na to da imaš pointer na character array. V funkciji, ko hočeš dostopat do seznam[1], dostopaš vbistvu do *(seznam+4), ker je to int pointer (in int je velik 4 bajte). Kar je pa seveda narobe.
Torej, napiši tako:
LP
Torej, napiši tako:
void prt(char *seznam, int len)
LP
smoke ::
Nemorem spremenit posta. Prepozno sem videl, tisti "če so namest charov inti, dela v redu.". Napiši pred mainom še prototip funkcije prt.
Meni sicer gcc 4.7 skompajla vredu, in tut vredu izpiše ko program poženem, že če samo spremenim int* v char* v funkciji.
LP
void prt(char *seznam, int len);
Meni sicer gcc 4.7 skompajla vredu, in tut vredu izpiše ko program poženem, že če samo spremenim int* v char* v funkciji.
LP
_Enterprise_ ::
še enkrat bom izrabil temo
in sicer, imam program ki pretvarja iz ppm v pbm, ampak me zajebava branje podatkov barv iz posameznega piksla. namreč, stvar dela prvih par sto obhodov, potem pa nekam čudno bere posamezne vrednosti RGB (vse so okoli 30). posledično program ustvari pravilno sliko, če je original velikosti pod 100x100, medtem ko pri večjih izriše samo nekaj deset vrstic zgornjega roba
samo del kode ki dela probleme
in sicer, imam program ki pretvarja iz ppm v pbm, ampak me zajebava branje podatkov barv iz posameznega piksla. namreč, stvar dela prvih par sto obhodov, potem pa nekam čudno bere posamezne vrednosti RGB (vse so okoli 30). posledično program ustvari pravilno sliko, če je original velikosti pod 100x100, medtem ko pri večjih izriše samo nekaj deset vrstic zgornjega roba
samo del kode ki dela probleme
int f=0; FILE *dat=fopen("sample4.ppm", "r"); FILE *target=fopen("fajl2.pbm", "w"); int vsota; // vmes sta width in height pravilno izračunana int k=width*height; for (i=0; i<k; i++) { vsota=0; fread(&f, sizeof(unsigned char), 1, dat); vsota+=f; fread(&f, sizeof(unsigned char), 1, dat); vsota+=f; fread(&f, sizeof(unsigned char), 1, dat); vsota+=f; printf("\n%d", vsota/3); } fclose(dat); return 0;
Zgodovina sprememb…
- spremenil: _Enterprise_ ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C] ProcesiOddelek: Programiranje | 975 (884) | Cvenemir |
» | [C] Vsota števil v poljuOddelek: Programiranje | 1283 (1221) | Cvenemir |
» | C strukture, kazalci naloga pomocOddelek: Programiranje | 1469 (1364) | DavidJ |
» | C osnovaOddelek: Programiranje | 1559 (1074) | RunoTheDog |
» | C - pomočOddelek: Programiranje | 1457 (1197) | Thagirion |