Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: numere foarte mari [150-200 numere]  (Citit de 6425 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
blackwofl15
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« : Februarie 15, 2008, 17:49:16 »

este vorba de acele numere extrem de mari care pot fi prelucrate doar cu vectori.

In fisierul numere.txt se afla pe cate un rand 2 numere pana in 200 cifre.
Sa se calculeze suma lor.

intrebare: cum pot lua doar cate o cifra dintr-un sir de numere ?

ex:
sir: 202215748421868421567865461324
vreau sa pun intr-o variabila a pe 2,apoi pe 0,apoi pe 2, si tot asa ;



ceva sfaturi !?  Eh? Confused
Memorat
recviem
Client obisnuit
**

Karma: -26
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #1 : Februarie 15, 2008, 18:04:14 »

Depinde .. daca sirul il citesti din fisier poti citi caracter cu caracter scanf("%c",&c) si apoi sa pui in a c-'0' (c++), apoi iti construiesti sirul, si accesezi cifra cu sir [ x ] unde x e pozitia. Pentru operatii pe numere mari cauta aici
« Ultima modificare: Februarie 15, 2008, 19:31:05 de către AleX . » Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #2 : Februarie 15, 2008, 19:10:22 »

caracter cu caracter scanf("%d",&c)
Cod:
scanf("%c", &c);
Whistle

Daca lucrezi in c++ poti folosi si fgets(vector, nr_max_caractere, fisier); Trebuie sa ai grija ca iti citeste si '\n' de la sfarsit, deci cand vrei sa vezi lungimea sirului (sa ii zicem s) faci n = strlen(s)-1; sau, mai sigur,
Cod:
while ( s[n]<'0' || s[n]>'9' ) n--; 

Daca lucrezi in pascal poti citi intr-un string (ca ai zis ca sunt maxim 200 de cifre), cu readln(s); Ca sa faci conversia poti face ord() pe fiecare element (care iti intoarce codul ASCII) si din care scazi valoarea lui '0' (ord('0') mai exact). Apoi uite-te pe linkul dat de AleX., gasesti acolo op pe nr mari.
« Ultima modificare: Februarie 15, 2008, 19:15:39 de către Sima Cotizo » Memorat
recviem
Client obisnuit
**

Karma: -26
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #3 : Februarie 15, 2008, 19:31:44 »

caracter cu caracter scanf("%d",&c)
Cod:
scanf("%c", &c);
Whistle
Embarassed am modificat ..

Am intalnit probleme cu '\n'-ul si fgets() sau fread(), avand in vedere ca newline are 2 caractere .. strlen(s)-2 in cazul acela.
Memorat
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #4 : Februarie 15, 2008, 19:45:23 »

Am intalnit probleme cu '\n'-ul si fgets() sau fread(), avand in vedere ca newline are 2 caractere .. strlen(s)-2 in cazul acela.
Newline e un singur caracter, nu 2. In limbaj il reprezinti tu cu 2 simboluri, dar el are codul ASCII 10.
Memorat

Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
blackwofl15
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #5 : Februarie 15, 2008, 19:56:37 »

sar'mana Very Happy
Memorat
recviem
Client obisnuit
**

Karma: -26
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #6 : Februarie 15, 2008, 22:30:39 »

Am intalnit probleme cu '\n'-ul si fgets() sau fread(), avand in vedere ca newline are 2 caractere .. strlen(s)-2 in cazul acela.
Newline e un singur caracter, nu 2. In limbaj il reprezinti tu cu 2 simboluri, dar el are codul ASCII 10.

Dap, am ametit-o putin, strlen() returneaza lungimea, deci ultimul element se afla pe pozitia strlen()-1. Daca se termina in '\n' ultimul element e strlen()-2. Stringurile incep de la 0  Whistle
Memorat
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #7 : Februarie 16, 2008, 14:27:05 »

Am intalnit probleme cu '\n'-ul si fgets() sau fread(), avand in vedere ca newline are 2 caractere .. strlen(s)-2 in cazul acela.
Newline e un singur caracter, nu 2. In limbaj il reprezinti tu cu 2 simboluri, dar el are codul ASCII 10.

Te contrazic. Depinde de sistemul de operare in care a fost creeat fisierul de intrare. In Windows sfarsitul de linie este 0x0D0A. Adica ASCII 13 si ASCII 10. In Linux (Unix) ai doar 0x0A.
Este adevarat ca exista si programe de windows care pot salva in format Unix si vice-versa.
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #8 : Februarie 16, 2008, 17:41:50 »

ca sa nu ai probleme poti sa faci asa :
Cod:
for (i=0;s[i]>='0'&&s[i]<='9';i++)
L=i-1;

si in felul asta nu mai ai probleme nici cu spatiile nici cu newline-rile nici cu nimic.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines