PDA

Visualizza la versione completa : [C/C++]Convertire stringa caratteri in ascii,poi in binario e infine in una matrice..


andrea_NET-_DSL
19-02-2004, 14:30
Dovrei fare un programma in C(ma va bene pure in c++ al massimo :) ) che :

1) legga una stringa di caratteri da tastiera

2)per ogni carattere della stringa effetutti la conversione in ascii e dal numero ascii ottenuto in codice binario

3)organizzi i caratteri cosi' tradotti ,in binario quindi, in una matrice(un carattere per riga).

Mi potete aiutare scrivendone il codice? Vi prego non so davvero come fare specialmente nei punti 2 e 3.... :bh: :confused:

Grazie mille :ciauz: :)

andrea_NET-_DSL
19-02-2004, 16:23
Ragazzi ho scritto questo codice...

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

char nome[1000];
int i;

binario(int n);

main()
{
gets(nome);

for (i=0;i<strlen(nome);i++)
printf("%c = %d \n",nome[i],nome[i]);


for (i=0;i<strlen(nome);i++)
binario(nome[i]);

}


binario(int n)
{
int base=2, array[50];

int counter = 0;
int tmp = n;

while( tmp != 0 )
{
counter++;
array[counter] = tmp % base;
tmp = tmp / base;
}

tmp = counter;
printf("\n");
for( int i = 0; i < counter; ++i )
{
printf("%d",array[tmp]);
tmp--;
}

}
Questo soddisfa i punti 1 e 2 cio chiede in input una stringa,converte in codice ascii ogni singolo carattere e ogni singolo codice ascii viene convertito in binario....

Ora mi manca di inserire quei codici binari che ho ottenuto in una matrice soddisfacendo cosi' il punto 3...mi potete aiutare????Ora non so propio ocme fare :dh: :(
Aiutoooooooooooo :fagiano: :cry:

grazie mille :ciauz:

nightfall
19-02-2004, 19:00
Le "Stringhe" o i caratteri che inserisci puoi convertirli in ascii senza nessuna codiafica particolare :

char a = 'A';
printf ("%d", a);

Stampa il Valore in ascii di a...

nightfall
19-02-2004, 19:09
Prova Cosi'... Non l'ho Provato ma dovrebbe andare anche se e'
un po' bruttino da vedere con tutte le variabili Globali... :(



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

#define MAX_R 10
#define MAX_C 8

int matrix[MAX_R][MAX_C];
char nome[1000];
int step = 0;
binario(int n);

main()
{
int i, j;
gets(nome);

for (i=0;i<strlen(nome);i++)
printf("%c = %d \n",nome[i],nome[i]);


for (i=0;i<strlen(nome);i++)
binario(nome[i]);


getchar();
}


binario(int n)
{
int base=2, array[50];
int i;

int counter = 0;
int tmp = n;

while( tmp != 0 )
{
counter++;
array[counter] = tmp % base;
tmp = tmp / base;
}

tmp = counter;
printf("\n");
for( int i = 0; i < counter; ++i )
{
matrix[step][i] = array[tmp];
tmp--;
}
step++;
}

puzzetta
19-02-2004, 19:13
Originariamente inviato da nightfall
Prova Cosi'... Non l'ho Provato ma dovrebbe andare anche se e'
un po' bruttino da vedere con tutte le variabili Globali... :(



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

#define MAX_R 10
#define MAX_C 8

int matrix[MAX_R][MAX_C];
char nome[1000];
int step = 0;
binario(int n);

main()
{
int i, j;
gets(nome);

for (i=0;i<strlen(nome);i++)
printf("%c = %d \n",nome[i],nome[i]);


for (i=0;i<strlen(nome);i++)
binario(nome[i]);


getchar();
}


binario(int n)
{
int base=2, array[50];
int i;

int counter = 0;
int tmp = n;

while( tmp != 0 )
{
counter++;
array[counter] = tmp % base;
tmp = tmp / base;
}

tmp = counter;
printf("\n");
for( int i = 0; i < counter; ++i )
{
matrix[step][i] = array[tmp];
tmp--;
}
step++;
}


Cavolo com' complicatoo!!! :eek:

Dovete essere programmatori esperti!

nightfall
19-02-2004, 19:17
:quote: (Ma Quanto sei Simpatico)

andrea_NET-_DSL
19-02-2004, 19:52
Originariamente inviato da nightfall
Prova Cosi'... Non l'ho Provato ma dovrebbe andare anche se e'
un po' bruttino da vedere con tutte le variabili Globali... :(



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

#define MAX_R 10
#define MAX_C 8

int matrix[MAX_R][MAX_C];
char nome[1000];
int step = 0;
binario(int n);

main()
{
int i, j;
gets(nome);

for (i=0;i<strlen(nome);i++)
printf("%c = %d \n",nome[i],nome[i]);


for (i=0;i<strlen(nome);i++)
binario(nome[i]);


getchar();
}


binario(int n)
{
int base=2, array[50];
int i;

int counter = 0;
int tmp = n;

while( tmp != 0 )
{
counter++;
array[counter] = tmp % base;
tmp = tmp / base;
}

tmp = counter;
printf("\n");
for( int i = 0; i < counter; ++i )
{
matrix[step][i] = array[tmp];
tmp--;
}
step++;
}

questo programma da te modificato ,a partire da quello fatto da me, chiesta una stringa la trasforma ,carattere per carattere, in codice ascii ma mentre il mio andava "avanti" trasformando il codice ascii di ogni singola lettera in binario il tuo non f altro :stordita: lo potresti corregger per piacere??? :)

Grazie mille :ciauz: ;)

andrea_NET-_DSL
20-02-2004, 14:45
Up aiutooooooo :( :cry:


:) :ciauz:

grazie...

iguana13
20-02-2004, 16:18
Ecco il mio codice (testato, almeno un po')



#define MAX_C 100

void main()
{
cout << "Inserire i caratteri, per terminare '.'" << endl;

unsigned char c;
bool matrix[MAX_C][8];
int numchar = 0;
int i,j;

do {
c = getche();
if(c=='.') break;
numchar++;

for(i=7; i + 1; i--)
{
matrix[numchar-1][i] = c % 2;
c >>= 1;
}
} while(1);

cout << "Ecco tutti i valori in binario:" << endl;

for(j=0; j<numchar; j++) {
c = 0;
for(i=0; i<8; i++) {
c += pow(2, (8 - i - 1)) * matrix[j][i];

cout << matrix[j][i];
}
cout << "\t=\t" << c << endl;
}
}

andrea_NET-_DSL
20-02-2004, 19:38
Originariamente inviato da iguana13
Ecco il mio codice (testato, almeno un po')



#define MAX_C 100

void main()
{
cout << "Inserire i caratteri, per terminare '.'" << endl;

unsigned char c;
bool matrix[MAX_C][8];
int numchar = 0;
int i,j;

do {
c = getche();
if(c=='.') break;
numchar++;

for(i=7; i + 1; i--)
{
matrix[numchar-1][i] = c % 2;
c >>= 1;
}
} while(1);

cout << "Ecco tutti i valori in binario:" << endl;

for(j=0; j<numchar; j++) {
c = 0;
for(i=0; i<8; i++) {
c += pow(2, (8 - i - 1)) * matrix[j][i];

cout << matrix[j][i];
}
cout << "\t=\t" << c << endl;
}
}


si includendo le librerie
#include <iostream.h>
#include <math.h>
#include <conio.h>
v grazie mille :)
Ma i valori binari in uscita si trovano in una matrice vero??nel codice vedo matrix...

No perch dopo aver fatto questo devo , per ogni riga e colonna,della matrice appunto, aggiungere i bit di parit... cio verificare per ogni riga e colonna se il numero degli 1 pari:se lo aggiungo 0 altrimenti aggiungo 1...poi con la stringa binaria ottenuta alla fine da questo lavoro ristrasformala in numero decimale,quindi ascii, e poi in carattere....

Mi puoi aiutare anche in questo??scusa se ti disturbo ancora :fagiano: :( ...ma te ne sarei grato :)

:ciauz: :ciauz:

Loading