Czy da się oeprować na nazwach zmiennych w funkcji.
Ostatnio zmodyfikowano 2011-01-08 18:17
| jsc Temat założony przez niniejszego użytkownika | Czy da się oeprować na nazwach zmiennych w funkcji. » 2011-01-08 14:33:48 Założmy, że mamy taki kod: #include <iostream>
 
 using namespace std;
 
 static int porow_a = 0; //Bez tego i tak się rozwalą się wyniki
 static int porow_b = 0;
 static int porow_c = 0;
 
 void wypisz_po_cyfrze (int liczba_a)
 for (int i = 1000000; i >= 1; i /= 10) //Coś na kształt rekurencji
 {
 if (i > liczba_a)
 {
 continue;
 }
 
 porow_a = porow_a * 10;
 cout <<( liczba_a / i ) - porow_a;
 porow_a = liczba / i;
 }
 
 void wypisz_po_cyfrze (int liczba_b)
 for (int i = 1000000; i >= 1; i /= 10) //Coś na kształt rekurencji
 {
 if (i > liczba_b)
 {
 continue;
 }
 
 porow_b = porow_b * 10;
 cout <<( liczba_b / i ) - porow_b;
 porow_a = liczba_b / i;
 }
 
 void wypisz_po_cyfrze (int liczba_c)
 for (int i = 1000000; i >= 1; i /= 10) //Coś na kształt rekurencji
 {
 if (i > liczba_c)
 {
 continue;
 }
 
 porow_c = porow_c * 10;
 cout <<( liczba_c / i ) - porow_c;
 porow_c = liczba_c / i;
 }
 
 main ()
 {
 int a, b, c;
 for (a = 2; a <= 10; ++a)
 {
 wypisz_po_cyfrze (a);
 b = a + 11;
 wypisz_po_cyfrze (b);
 c = a * 11;
 wypisz_po_cyfrze (c);
 }
 
 
 Moje pytanie brzmi: czy da się jakoś operować na nazwach przyjmowanych przez funkcję zmiennych, np. jako argument zrobię int liczba i gdy będę wywoływał, to odpowiedni kodzik podmieni nazwy liczba i porow odpowiednio na a i porow_a? | 
|  | 
| SeaMonster131 | » 2011-01-08 14:39:14 Po 1. napisz temat postu, a po 2. kod daj w [ code src="C++" ] ... [ /code ]
 lub
 [ cpp ] ... [ /cpp ]
 
 (bez spacji) :)
 | 
|  | 
| pekfos | » 2011-01-08 15:03:29 lub w [cpp] [/cpp]. żadnych spacji :) | 
|  | 
| michalp | » 2011-01-08 15:05:23 Nie da się z prostego powodu - to nie ma sensu. | 
|  | 
| jsc Temat założony przez niniejszego użytkownika | » 2011-01-08 16:34:44 Może się nie da. Ale uciekam od powtarzania tego samego fragmentu kodu, tylko po to aby zmienić nazwy zmiennych w wariantach do wyboru: void wypisz_po_cyfrze( int liczba_a, powtorz_a ){
 for( int i = 1000000; i >= 1; i /= 10 )
 {
 if( i > liczba_a )
 {
 continue;
 }
 
 porow_a = porow_a * 10;
 cout <<( liczba_a / i ) - porow_a;
 porow_a = liczba / i;
 }
 }
 
lub int zmienna; 
 void wypisz_po_cyfrze( int liczba, int zmienna )
 {
 switch( zmienna )
 case 0
 : for( int i = 1000000; i >= 1; i /= 10 )
 {
 if( i > liczba_a )
 {
 continue;
 }
 
 porow_a = porow_a * 10;
 cout <<( liczba_a / i ) - porow_a;
 porow_a = liczba / i;
 }
 break;
 case 1:
 for( int i = 1000000; i >= 1; i /= 10 )
 {
 if( i > liczba_b )
 {
 continue;
 }
 
 porow_b = porow_b * 10;
 cout <<( liczba_b / i ) - porow_b;
 porow_b = liczba_b / i;
 }
 break;
 
 default:
 for( int i = 1000000; i >= 1; i /= 10 )
 {
 if( i > liczba_c )
 {
 continue;
 }
 
 porow_c = porow_c * 10;
 cout <<( liczba_c / i ) - porow_c;
 porow_c = liczba_c / i;
 }
 break;
 }
 
 | 
|  | 
| michalp | » 2011-01-08 16:42:07 Użyj referencji. | 
|  | 
| jsc Temat założony przez niniejszego użytkownika | » 2011-01-08 17:38:39 Znacząco ułatwia pracę z takimi funkcjami, ale przy wywołaniu trzeba podać 2 argumenty, a chciałbym tylko 1. Mimo to dzięki. | 
|  | 
| malan | » 2011-01-08 18:17:53 Dlaczego dwa?
 /edit: Już wiem ;p. Zawsze możesz zrobić strukturę...
 | 
|  | 
| « 1 » |