hitme Posted November 11, 2014 Report Posted November 11, 2014 (edited) [EDIT]Salut, cum pot ordona crescator 3 numere (intregi) intr-o functie fara sa folosesc pointeri?valorile se citesc din main. Edited November 11, 2014 by hitme Quote
Active Members MrGrj Posted November 11, 2014 Active Members Report Posted November 11, 2014 (edited) Nu prea imi vine nici o idee in minte fara a folosi pointeri. Si chiar daca ar exista, cea cu pointeri este cea mai rapida si practica. Revin cu edit cand imi vine vreo idee //Edit:#include<stdio.h>void main(){ int a,b,c; printf(" Introdu' valorile pt a, b si c \n"); scanf("%d %d %d",&a,&b,&c); printf("\n a = %d",a); printf("\n b = %d",; printf("\n c = %d",c); a=a+b+c; b=a-b-c; c=a-b-c; a=a-b-c; printf("\n Dupa interschimbare -"); printf("\n a = %d",a); printf("\n b = %d",; printf("\n c = %d",c); getch();} Edited November 11, 2014 by MrGrj Quote
Whai_Nooa Posted November 11, 2014 Report Posted November 11, 2014 Foloseste o a treia variabila.De exemplu:aux=a;a=b;b=aux;unde a si b sunt numerele pe care le schimbi// Sper ca nu sunt prost, scuza ma daca sunt. Quote
Ganav Posted November 11, 2014 Report Posted November 11, 2014 Si mai simplu:// interschimba a cu ba ^= b;b ^= a;a ^= b;// interschimba b cu cb ^= c;c ^= b;b ^= c;// interschimba c cu ac ^= a;a ^= c;c ^= a; Quote
Active Members MrGrj Posted November 11, 2014 Active Members Report Posted November 11, 2014 Foloseste o a treia variabila.De exemplu:aux=a;a=b;b=aux;unde a si b sunt numerele pe care le schimbi// Sper ca nu sunt prost, scuza ma daca sunt.Asta e pentru interschimbarea a doua variabile. Voia pt. trei Quote
hitme Posted November 11, 2014 Author Report Posted November 11, 2014 scuze,am gandit ceva si am scris altcevavroiam sa le ordonez crescator Quote
Active Members MrGrj Posted November 11, 2014 Active Members Report Posted November 11, 2014 (edited) Ai doua modele de raspunsuri. Implementezi ce ti-am dat eu sau @Ganav intr-o functie. Iti ia maxim 2 minute.Uite aici ca referinta. Postezi codul si incercam sa te indrumam. Sa vedem cum gandesti.// Ca sa le sortezi le bagi pur si simplu intr-un vector si apoi iti alegi metoda prin care sa o faci (sa le sortezi) Edited November 11, 2014 by MrGrj Quote
hitme Posted November 11, 2014 Author Report Posted November 11, 2014 @MrGrj vorbesti de ordonare? am editat post-ul ca eram cu capul in nori cand scriam, vreau ordonarea crescatoarea a 3 numere, intr-o functie, fara sa aplic pointeri. (daca e posibil)am incercat cu o serie de if-uri, dar nu pot returna valorile Quote
Active Members MrGrj Posted November 11, 2014 Active Members Report Posted November 11, 2014 @MrGrj vorbesti de ordonare? am editat post-ul ca eram cu capul in nori cand scriam, vreau ordonarea crescatoarea a 3 numere, intr-o functie, fara sa aplic pointeri. (daca e posibil)am incercat cu o serie de if-uri, dar nu pot returna valorileO sa ma ghidez un pic dupa solutia data de Ganav dar functia te las pe tine sa o implementezi si sa o postezi:if (a > c) swap(a, c)if (a > swap(a, //Acum cel mai mic element este primul. Le verificam pe al doi-lea si al trei-leaif (b > c) swap(b, c);Asta daca vrei cu if-uri Quote
hitme Posted November 12, 2014 Author Report Posted November 12, 2014 asa apelez alta functie, vroiam sa fac ordonarea intr-o singura functie..mersi oricumC program to swap two numbers | Programming Simplified-aici tot cu pointeri Quote
Active Members MrGrj Posted November 12, 2014 Active Members Report Posted November 12, 2014 (edited) Daca imi spui exact ce ai de gand sa faci, te ajut. Ai o functie , si vrei sa ordonezi niste numere fara a folosi pointeri ?#include <stdio.h>void sortare(long [], long);int main(){ long a[100], n, c, d, swap; printf("Introdu nr elementelor pe care vrei sa le sortezi:\n"); scanf("%ld", &n); printf("Introdu %ld numere(integeri)\n", n); for (c = 0; c < n; c++) scanf("%ld", &a[c]); sortare(a, n); printf("Lista numerelor sortate in ordine crescatoare:\n"); for ( c = 0 ; c < n ; c++ ) printf("%ld\n", a[c]); return 0;}void sortare(long list[], long n){ long c, d, t; for (c = 0 ; c < ( n - 1 ); c++) { for (d = 0 ; d < n - c - 1; d++) { if (list[d] > list[d+1]) { /* Interschimbarea */ t = list[d]; list[d] = list[d+1]; list[d+1] = t; } } }}Nota:Algoritmul const? în parcurgerea tabloului de mai multe ori, pân? când devine ordonat. La fiecare pas se compar? dou? elemente al?turate. Dac? ai > ai + 1, (i = 1, 2, ..., n – 1), atunci cele dou? valori se interschimb? între ele. Edited November 12, 2014 by MrGrj Quote