C jezik,mali zadatak

poruka: 4
|
čitano: 1.888
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
C jezik,mali zadatak

Bok bok bok :)

Evo ljudovi bavim se C-om već par mjeseci pa sam došao do jednog zadatka oko kojeg se pomalo mučim,pa molio bih pomoć ako može :)

 

Znači jednostavno ide ovako: "Upisati dva stringa i zbrojiti ih (naglasak: pošto je zbrajanje trebaju biti brojevi,znači unos može biti samo broj)"

 

 

Hvala vam puno ako mognete ikako i na bilo kakav način pomoći :)

 
0 0 hvala 0
13 godina
neaktivan
offline
Re: C jezik,mali zadatak

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

void okreni(char *A, int a);

void
okreni(char *A, int a) {
    int i;
    for (i = 0; i < a / 2; i++) {
       A[i] ^= A[a - 1 - i];
       A[a - 1 - i] ^= A[i];
       A[i] ^= A[a - 1 - i];
    }
}
   

int
main(void)
{
    char A[1001], B[1001], C[1002];
    int a, b, c, i, prienos = 0;
    fgets(A, 100, stdin);
    fgets(B, 100, stdin);
    a = strlen(A);
    b = strlen(B);
    for (i = 0; i < a; i++)
       A[i] -= '0';
    for (i = 0; i < b; i++)
       B[i] -= '0';
    okreni(A, a);
    okreni(B, b);
    c = (a > b) ? a : b;
    for (i = 0; i < c; i++) {
       C[i] = A[i] + B[i] + prienos;
       if (C[i] > 9) {
          C[i] -= 10;
          prienos = 1;
       } else
          prienos = 0;
    }
    if (prienos)
       C[i++] = 1;
    okreni(C, c);
    for (i = 0; i < c; i++)
       C[i] += '0';
    C[c] = 0;
    printf("%s\n", C);
    return 0;
}

Poruka je uređivana zadnji put sri 4.7.2012 1:51 (crypticSoul).
16 godina
online
C jezik,mali zadatak

Evo rješenje uz pomoć standardnih funkcija

 

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

int main () {
    char unos1[20],unos2[20];
    scanf("%s%s",unos1,unos2);
    printf("%ld\n",atol(unos1)+atol(unos2));
    return 0;
}

Twitter- @capttawish Linux/GNU live forever.
 
2 0 hvala 0
17 godina
offline
C jezik,mali zadatak

Možemo i pretvaranje char vrijednosti u njihove dekadske vrijednosti sasvim fino uklopiti u to, s tim da ne zbrajamo dva broja direktno, nego izračunamo sumu na način da množimo znamenku sa potencijom dekadske baze broja za oba broja, i time izbjegnemo prelijevanje na sljedeću poziciju, samo se petljama prošetamo po sistemu znamenka puta potencija baze.

 

 

#include <iostream>
#include<cstring>
#define Max 100
using namespace std;

int ZbrojStringova(char* niz1, char* niz2)
{
    int duljina1 = strlen(niz1);
    int duljina2 = strlen(niz2);
    int suma = 0;
    for(int i = 0; i<duljina1; i++)
    {
       suma += (niz1[i] - 48) * pow(10., duljina1-1-i);
    }
    for(int j = 0; j<duljina2; j++)
    {
       suma += (niz2[j] - 48) * pow(10., duljina2-1-j);
    }
    return suma;
}



int main()
{
    char niz1[Max];
    char niz2[Max];
    int suma;
    cin.getline(niz1, Max);
    cin.getline(niz2, Max);
    suma = ZbrojStringova(niz1, niz2);
    cout<< suma << endl;
  
}

Poruka je uređivana zadnji put čet 5.7.2012 16:12 (Floki).
 
1 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice