• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

Проверка на цифри

  • Ја почнал/а темата
  • #1

stole_pesov

Intern
25 април 2008
530
17
techhub.mk
Задачата е вака :

Од тастатура се внесуваат непознат број на цели броеви. Да се напише програма која за секој внесен број ќе формира нов, така што секоја цифра X во бројот ќе се замени со цифра Y, а цифрата Z ќе се испушта. Цифрите X, Y и Z се внесени од тастатура и се исти за сите броеви. Програмата на крај печати колку броеви биле внесени.

Пример: X=1 Y=3 Z=9
21941 => 2343


Јас ја напишав вака :

--------------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#define EVER (;;)

int main()
{
int x,y,z,i,broj,pom,brojac=0,cifra,novbr2,pom2,cifra2,novbr;

printf("Vnesi za x");
scanf("%d",&x);
printf("Vnesi vrednost za y");
scanf("%d",&y);
printf("vnesi vrednost za z");
scanf("%d",&z);

printf("x=%d \t y=%d \t z=%d \n",x,y,z);
printf("Vnesuvajte broevi za kraj vnesete bukva\n");
for EVER
{
i=scanf("%i",&broj);
if (i) brojac++;
else break;

novbr=0;
pom=broj;
while(pom) {
cifra=pom % 10;
if (cifra==x){
cifra=y;
novbr=novbr*10 + cifra;
}
else if(cifra==z)cifra=0;
else novbr=novbr*10 + cifra;
pom/=10;
}
//Ova sega go pravam za da go prevratam dobieniot novbr bidejki e zapisan naopaku
//Bez ovoj ovoj cekor sega novbr ke bide naopaku
novbr2=0;
pom2=novbr*10;
while (pom2){
cifra2=pom2 % 10;
novbr2=novbr2*10 + cifra2 ;
pom2/=10;
}



printf("%d ===> %d\n", broj,novbr2);
}
printf("Vnesovte %d broja\n",brojac);
system("PAUSE");

return 0;
}
-------------------
Вака напишаното решение работи супер како што треба но сакам да ги избегнам овие цравените наредби

Дали ви текнува некоја друга наредба наместо оваа novbr=novbr*10 + cifra; со која новбр би го записувала редоследно .
 

Aleks

Gaining Experience
18 мај 2007
5,748
288
Лабараториска 3 - Вежба 3.

Со тоа for EVER никогаш неможеш да излезеш од циклусот, присети се на нешто друго :) Има поелегантно решение за тој дел.

Со она досега што го имаат предавано неможе на друг начин да се реши задачата.
 
  • Ја почнал/а темата
  • #4

stole_pesov

Intern
25 април 2008
530
17
techhub.mk
Лабараториска 3 - Вежба 3.

Со тоа for EVER никогаш неможеш да излезеш од циклусот, присети се на нешто друго :) Има поелегантно решение за тој дел.

Со она досега што го имаат предавано неможе на друг начин да се реши задачата.
Како мислиш никогаш нема да излезам незнам дали забележа имам ставено break ако не се иницијализира успешно.

Програмата вака функционира само сакав да го избегнам ова што сум го бележал со црвено.
 

Aleks

Gaining Experience
18 мај 2007
5,748
288
Ок не го видов,

но вака би било подобро :

while (scanf()==1) { }
 

Aleks

Gaining Experience
18 мај 2007
5,748
288
@petre.dimov така како што си напишал ќе треба да внесува и 'a' за воопшто да влезе во циклусот.
 

Нови мислења

Последни Теми

Статистика

Теми
43,713
Мислења
849,212
Членови
29,439
Најнов член
magicdadi
На врв Дно