Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. www.neurohope.ro |
Matrice in C++
Last Updated: Oct 26 2018 14:22, Started by
Alexandru0101
, Oct 07 2018 18:21
·
0
#1
Posted 07 October 2018 - 18:21
salut, ma poate ajuta si pe mine cineva, un incepator in programare in c, cu elaborarea acestui program?
Banca BTR a început utilizarea unui nou scaner pentru prelucrarea numerelor cecurilor utilizate. Scanerul transformă liniile orizontale şi verticale ale numerelor în simboluri ASCII '|' (cod ASCII 124) şi '_' (cod 95) corespunzător. Astfel, după scanare se formează o consecutivitate de linii verticale, orizontale şi spaţii. Se ştie, că fiecare cec are un număr din 9 cifre şi pentru fiecare număr se îndeplineşte condiţia: (d1+2d2+...+9d9) mod 11 = 0, unde di — o cifră a numărului. Cifrele se numerotează de la dreapta spre stânga: d9d8d7d6d5d4d3d2d1. În procesul de scanare apar erori. Scrieţi un program, care determină numărul corect al cecului, dacă se ştie că: • Dacă numărul citit este admisibil pentru cec , atunci el este corect; • E citită greşit nu mai mult de o cifră; • La scanare nu apar linii suplimentare. Input Fişierul de intrare conţine imaginea scanată de înălţime 3 şi lungime 27 simboluri. Fiecare cifră ocupă un pătrat de dimensiunea 33. Output Fişierul conţine sau numărul corect al cecului sau mesajul failure, dacă numărul nu poate fi restabilit, sau mesajul ambiguous, dacă există mai multe soluţii. Exemplu input _ _ _ _ _ _ _ | _| _| |_||_ |_ | |_||_| ||_ _| | _||_| | |_| _| Exemplu output 123456789 Edited by Alexandru0101, 07 October 2018 - 18:24. |
#3
Posted 07 October 2018 - 19:03
#include <stdio.h>
int main() {int i; double a[10],n; scanf("%d",&n); for(i=1;i<n;i++){scanf("%d",a[i]);} for(a[i]=0;i<n;i++){ if(a[i]==1){printf(" \n | \n | ");} if(a[i]==2){printf(" _ \n _|\n|_ ");} if(a[i]==3){printf(" _ \n _|\n _|");} if(a[i]==4){printf(" \n|_|\n |");} if(a[i]==5){printf(" _ \n|_ \n _|");} if(a[i]==6){printf(" _ \n|_ \n|_|");} if(a[i]==7){printf(" _ \n |\n |");} if(a[i]==8){printf(" _ \n|_|\n|_|");} if(a[i]==9){printf(" _ \n|_|\n _|");} } } am incercat mai intai sa atribui unei cifre(element al tabloului) secventa care imi trebuie, iar programul nu afiseaza nimic stiu ca trebuie sa creez un fisier, dar asta mai tarziu, acum am vrut sa vad daca atribuie aceste valori imi puteti da un sfat va rog cum sa corectez? |
#4
Posted 08 October 2018 - 07:04
daca inteleg eu bine problema, tu trebuie sa citesti 81 de caractere (grupate pe 3 linii), nu double-uri.
|
#5
Posted 08 October 2018 - 17:57
_Smiley_, on 08 octombrie 2018 - 07:04, said:
daca inteleg eu bine problema, tu trebuie sa citesti 81 de caractere (grupate pe 3 linii), nu double-uri. int main(){ FILE *f; int i, j; f = fopen("problema29.txt", "r"); if (f==NULL) perror("error opening file"); else{} char a[3][3]; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++){ fscanf(f, "%c", &a[i][j]); //printf("%c", a[2][2]); for (i = 0; i < 3; i++) for(j = 0;j<3;j++) { if (a[0][0]==' ' && a[0][1]=='_' && a[0][2]==' ' && a[1][0]=='|' && a[1][1]==' ' && a[1][2]=='|' && a[2][0]=='|' && a[2][1]=='_' && a[2][2]=='|') printf("0"); if (a[0][0]==' ' && a[0][1]==' ' && a[0][2]==' ' && a[1][0]==' ' && a[1][1]=='|' && a[1][2]==' ' && a[2][0]==' ' && a[2][1]=='|' && a[2][2]==' ') printf("1"); if (a[0][0]==' ' && a[0][1]=='_' && a[0][2]=='|' && a[1][0]=='|' && a[1][1]=='_' && a[1][2]==' ' && a[2][0]==' ' && a[2][1]=='_' && a[2][2]==' ') printf("2"); if (a[0][0]==' ' && a[0][1]=='_' && a[0][2]==' ' && a[1][0]==' ' && a[1][1]=='_' && a[1][2]=='|' && a[2][0]==' ' && a[2][1]=='_' && a[2][2]=='|') printf("3"); if (a[0][0]==' ' && a[0][1]==' ' && a[0][2]==' ' && a[1][0]=='|' && a[1][1]=='_' && a[1][2]=='|' && a[2][0]==' ' && a[2][1]==' ' && a[2][2]=='|') printf("4"); if (a[0][0]==' ' && a[0][1]=='_' && a[0][2]==' ' && a[1][0]=='|' && a[1][1]=='_' && a[1][2]==' ' && a[2][0]==' ' && a[2][1]=='_' && a[2][2]=='|') printf("5"); if (a[0][0]==' ' && a[0][1]=='_' && a[0][2]==' ' && a[1][0]=='|' && a[1][1]=='_' && a[1][2]==' ' && a[2][0]=='|' && a[2][1]=='_' && a[2][2]=='|') printf("6"); if (a[0][0]==' ' && a[0][1]=='_' && a[0][2]==' ' && a[1][0]==' ' && a[1][1]==' ' && a[1][2]=='|' && a[2][0]==' ' && a[2][1]==' ' && a[2][2]=='|') printf("7"); if (a[0][0]==' ' && a[0][1]=='_' && a[0][2]==' ' && a[1][0]=='|' && a[1][1]=='_' && a[1][2]=='|' && a[2][0]=='|' && a[2][1]=='_' && a[2][2]=='|') printf("8"); if (a[0][0]==' ' && a[0][1]=='_' && a[0][2]==' ' && a[1][0]=='|' && a[1][1]=='_' && a[1][2]=='|' && a[2][0]==' ' && a[2][1]=='_' && a[2][2]=='|') printf("9"); fclose(f);}char a[i][j]; /*FILE *f1; f1=fopen("output.txt","w"); fprintf(f1,"%s",a[i][j]); fclose(f1);*/ } } am modificat putin, dar programul nu vrea sa citeasca din fisier si sa scie in altul |
#6
Posted 14 October 2018 - 18:40
Ce ai tu se numeste: Display-ul BSD:
Alexandru0101, on 07 octombrie 2018 - 18:21, said:
Exemplu input _ _ _ _ _ _ _ | _| _| |_||_ |_ | |_||_| ||_ _| | _||_| | |_| _| Exemplu output 123456789 Ne alegem un sens de codificare(fie acesta orar sau trignometric):Sa luam sensul orar. Ne alegem si pozitia de parcurgere pt codificare: pt fiecare reprezentare grafica a cifrei, sa plecam din coltzul stanga-sus Asadar pt fiecare reprezantare grafica a unui cifre, plecam din coltul stanga sus , in sens orar (ca asa am ales eu) Atunci matricea logica corespunzatoare cifrei 8 va avea toate segmentele ocupate.Asta inseamna ca virgula codificarea binara corespunzatoare matricei logice pentru numarul 8, va fi: 1111111 (7 segemente toate ocupate) Cifra 1 va avea atunci codificarea : 0000011 Cifra 2 : 01101101 Si tot asa (unde 1 segment ocupat, 0 spatiu liber) si cu sensul si pozitia specificate mai sus de mine.(daca iti alegi alta pozitie de plecare si alt sens, atunci vei avea alte codificare binare insa tot pe 7 segmente) Ce trebuie sa faci tu este: sa stochezi reprezentarea grafica din fisier intr-o matrice de charuri de 3 linii si (9 X 3) coloane sa stochezi intr-un vector, codificarile binare pt fiecare cifra . sa creezi interpretorul de cifra care : intr-o bucla for va citi la ficare pas, configuratia grafica a fiecarei cifre de 3 X 3 extrasa din matricea de caractere: (exemplu: pentru pasul K , vei extrage elementele : a[0][k] a[0][k+1] a[0][k+2], a[1][k] a[1][k+1] a[1][k+2], a[2][k] a[2][k+1] a[2][k+2], conform sensului si pozitiei alese de mine mai sus.Daca iti vei alege alt sens/alta pozitie de plecare atunci si ordinea de selectie din matrice va trebui s-o schimbi) configuratia grafica o vei serveri interpretorului de cifra care va genera codul binar conform unui algoritm similar ce am pus eu mai sus apoi va urma o concatenare care va genera numarul corespunzator. Mai multe detalii poti vedea aici: http://www.nutsvolts...displays-part-1 Edited by puiu_pe_diezel, 14 October 2018 - 18:54. |
#8
Posted 15 October 2018 - 19:29
#include <stdio.h>
#include <stdlib.h> // Calculate the pow int getPow(int base, int pow) { int res = 1; while(pow > 0) { res *= base; pow--; } return res; } // get a digit from the char input int getNumber(char **arr, int j) { ////int i, jj; ////for(i = 0; i < 3; i++) { //for(jj = 0; jj < 3; jj++) //printf("%c", arr[1][2]); ////printf("\n"); // create an tree structure using ifs to find the digit if(arr[0][j] == ' ' && arr[0][j + 1] == ' ' && arr[0][j + 2] == ' ') { if(arr[2][j + 2] == '|' && arr[1][j + 2] == '|') if(arr[1][j] == ' ' && arr[1][j + 1] == ' ' && arr[2][j] == ' ' && arr[2][j + 1] == ' ') return 1; else if(arr[1][j] == '|' && arr[1][j + 1] == '_' && arr[2][j] == ' ' && arr[2][j + 1] == ' ') return 4; } else if(arr[0][j] == ' ' && arr[0][j + 1] == '_' && arr[0][j + 2] == ' ') { if(arr[1][j + 2] == '|' && arr[2][j + 2] == '|' && arr[1][j + 1] == '_' && arr[2][j + 1] == '_') { if(arr[1][j] == ' ' && arr[2][j] == ' ') return 3; else if(arr[1][j] == '|' && arr[2][j] == '|') return 8; else if(arr[1][j] == '|' && arr[2][j] == ' ') return 9; } else if(arr[1][j + 1] == '_' && arr[2][j + 1] == '_') { if(arr[1][j] == '|' && arr[2][j + 2] == '|') { if(arr[2][j] == ' ') return 5; else if(arr[2][j] == '|') return 6; } else if(arr[1][j] == ' ' && arr[1][j + 2] == '|' && arr[2][j] == '|' && arr[2][j + 2] == ' ') return 2; } else if(arr[1][j + 1] == ' ' && arr[1][j + 2] == '|' && arr[2][j + 2] == '|') { if(arr[1][j] == ' ' && arr[2][j] == ' ' && arr[2][j + 1] == ' ') return 7; else if(arr[1][j] == '|' && arr[2][j] == '|' && arr[2][j + 1] == '_') return 0; } } return -1; // return -1 if no digit is found } int findValid(int number) { int count = 0; int res = 0; int digit, index, i; int resDigit, resIndex, result; int initialNumber = number; int skippedDigit; for(index = 1; index <= 9; index++) { res = 0; number = initialNumber; for(i = 1; i <= 9; i++) { if(i != index) res += i * (number % 10); else skippedDigit = number % 10; number /= 10; } for(digit = 0; digit <= 9; digit++) { res += digit * index; if(res % 11 == 0) { count++; resIndex = index; resDigit = digit; result = initialNumber - (skippedDigit - digit) * getPow(10, index - 1); } res -= digit * index; } } if(count == 1) return result; return -1; } // Check is the input is valid int checkIfValid(int number) { int i, res; res = 0; for(i = 9; i > 0; i--) { res += (10 - i) * (number % 10); number /= 10; } if(res % 11 == 0) return 1; return -1; } // find the number of 9 digits from the char input int findNumber(char **arr) { int digit, number, j; number = 0; for(j = 0; j < 27; j += 3) { digit = getNumber(arr, j); //printf("digit: %d", digit); if(digit == -1) { // if no digit was found return -1 return -1; //return 0; } number = 10 * number + digit; } return number; } int main() { FILE *f, *g; char **arr; int i, j, number, digit, check; arr = malloc(sizeof(char *) * 3); for(i = 0; i < 3; i++) arr[i] = malloc(sizeof(char) * 27); f = fopen("pr29.in", "r"); g = fopen("pr29.out", "w"); // Read the input for(i = 0; i < 3; i++) for(j = 0; j < 27; j++) { fscanf(f, "%c", &arr[i][j]); //printf("i: %d, j: %d, char: %c", i, j, arr[i][j]); if(arr[i][j] == '\n') fscanf(f, "%c", &arr[i][j]); printf("i: %d, j: %d, char: %c ", i, j, arr[i][j]); } // find the number from the input number = findNumber(arr); printf("number: %d", number); // If number is -1 the some chars weren't decoded into digits if(number == -1) { fprintf(g, "Failure"); return 0; } // check if valid check = checkIfValid(number); // if not try to find a unique valid if(check == -1) number = findValid(number); // if more valid cases print ambigous if(number == -1) fprintf(g, "Ambiguous"); // print the number else fprintf(g, "%09d", number); return 0; } //iata cum am rezolvat-o , sper ca va prinde bine cuiva, cel putin ca exemplu(+fisiere) |
#9
Posted 17 October 2018 - 13:56
din pacate programul asta nu e facut de tine, iar metoda de rezolvare este greoaie.Foloseste-te de modul cum functioneaza BCD-ul
|
#10
Posted 23 October 2018 - 18:05
puiu_pe_diezel, on 17 octombrie 2018 - 13:56, said:
din pacate programul asta nu e facut de tine, iar metoda de rezolvare este greoaie.Foloseste-te de modul cum functioneaza BCD-ul Edited by Alexandru0101, 23 October 2018 - 18:06. |
|
#11
Posted 25 October 2018 - 07:58
daca vrei sa rezolvi o problema calumea citeste informatiile despre modul de generare si functionare al BCD-ului, care te simplifica mult de tot si inveti si ceva nou.
peste 80 % din codul pe care l-ai scris poate fi scos daca citesti ce ti-am dat despre BCD si alegi o rezvolvare eleganta, inainte remodeland problema cu informatiile despre functionarea BCD |
#12
Posted 26 October 2018 - 14:22
Cand o sa am timp , am sa-ti pun aici cum ar fi trebuit sa faci codul, dupa documentatia pe care ti-am atasat-o initial.
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users